Linux suppress find error no script bash combinado com a exclusão do arquivo

0

Eu tenho um script de uma linha que funciona bem, mas ...

find $HOME/html/mydir/downloads/sec/*.zip  -mtime 2 -exec rm {} \;

Ele gera um erro se não houver arquivos encontrados e meu host envia um e-mail sem sentido. Então, eu quero suprimir a mensagem de erro se o "erro" for "Nenhum tal arquivo ou diretório"

Eu estava pensando que poderia fazer algo assim:

find $HOME/html/mydir/downloads/sec/*.zip 2>&1 | grep -v "No such file or directory" 

... mas eu não sei como combinar isso com o meu script atual de tal forma que a saída do find ainda irá para exec se houver arquivos encontrados (ou se houver outro tipo de erro).

    
por jchwebdev 15.05.2016 / 00:25

1 resposta

3

Tente:

find $HOME/html/mydir/downloads/sec/ -maxdepth 1 -name '*.zip' -mtime 2 -delete

find não tem problema se uma pesquisa for encontrada não encontrar arquivos. Ele tem um problema se o diretório / arquivos que você especificar na linha de comando não existir. A solução, conforme mostrado acima, é especificar um diretório que exista e solicitar que ele procure por .zip files.

Além disso, observe que -exec rm {} \; pode ser substituído por -delete .

A propósito, -mtime 2 só será verdadeiro para arquivos que são (arredondados para um número inteiro) de 2 dias. Se você quiser excluir arquivos com mais de dois dias, use -mtime +2 .

    
por 15.05.2016 / 00:46

Tags