[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [shell-script] Re: Como fazer um script rm -rf com | grep.
From: |
MrBiTs |
Subject: |
RE: [shell-script] Re: Como fazer um script rm -rf com | grep. |
Date: |
Tue, 3 Jan 2006 15:40:23 -0200 |
/*
Galera obrigado pela atençao da lista.
Seguinte a dica que mais se enquadra a minha realidade é a Mauricio com uma
variavel e depois um for. Mais fiz um script basicao e quero q deem uma
olhada.
#!/bin/bash
echo "SELECIONANDO ARQUIVOS PARA SEREM DELETADOS"
VAR=`ls -l | grep 2005-12-21 | tr -s ' ' | cut -d ' ' -f8`
for ARQUIVO in "$VAR"
do
rm -rf $ARQUIVO
done
echo "ARQUIVOS DELETADOS COM SUCESSO"
Copiando o script do Mauricio, agora queria criar uma interatividade do
tipo:
Qual data deseja deletar os arquivos?
Para nao ter que entrar no script e modificar o grep toda vez que eu
quizer executar este script.
Tipo tenho que criar uma variavel para o grep? Como?
Agradeço a galera do Find. Vou deletar arquivos de um só diretorio em
especifico, acredito q se fizer com o find vou deletar todos os arquivos
criados nesta data e esta nao é minha intençao. Se eu estiver errado por
favor me corrijam.
*/
No seu script, faça:
#!/bin/bash
read -p "Digite a data" DATA
echo "SELECIONANDO ARQUIVOS DE $DATA PARA SEREM DELETADOS"
VAR=$(ls -l | grep $DATA | tr -s ' ' | cut -d ' ' -f8)
for ARQUIVO in "$VAR"
do
rm -rf $ARQUIVO
done
echo "ARQUIVOS DE $DATA DELETADOS COM SUCESSO"
Quanto ao find, quando você diz que vai deletar todos os arquivos criados
numa determinada data, isso acontece com o parametro -ctime. Com o -name
voce vai deletar arquivos cujo nome contenha a string de data que você quer.
Entretanto, veja o seu script. Quando você faz um ls -l | grep 2005-12-21,
por ser uma listagem longa, você vai ter como retorno todos os arquivos cuja
data de último acesso seja 2005-12-21. Em outras palavras, irá apagar todos
os arquivos com data de 2005-12-21. Se não é isso que você quer fazer com o
find, então o seu scritp também está errado. E se o seu problema é apagar
todos os arquivos de uma determinada data de um diretório específico, você
pode simplemente utilizar o find /caminho/do/diretorio/especifico -ctime +7
-exec rm -f {} \; ( não se esqueça nunca do espaço \; senão o find não
funciona ).
Acho que falta a você alguns conhecimentos mais profundos das ferramentas
que você tem nas mãos. Leia algumas documentações sobre find e uns tutoriais
sobre shell script.
------
GPG Public Key
http://keyserver.veridis.com:11371/export?id=-6037232142263389818
\\|||//
(.) (.)
----ooOO--( )--OOoo-----
MrBiTs
http://www.mrbits.com.br
address@hidden
------------------------