shell-script-pt
[Top][All Lists]
Advanced

[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
------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]