Usando 'find' em um diretório não existente

5

Existe uma maneira simples de fazer isto silenciosamente não fazer nada, se /my-directory não existir?

find /my-directory -type f -mtime +14 -print0 | xargs -r0 rm

Versões:

  • find: GNU findutils 4.5.10
  • bash 4.2.53
por guettli 20.06.2016 / 12:47

3 respostas

10

Você pode eliminar o relatório de erros de find com 2>/dev/null ou pode evitar a execução do comando:

test -d /my-directory && find /my-directory -type f -mtime +14 -print0 | xargs -r0 rm

Como uma pequena otimização e um código mais claro, algumas versões do find - incluindo o seu - podem executar o rm diretamente para você:

test -d /my/directory && find /my-directory -type f -mtime +14 -delete
    
por 20.06.2016 / 13:44
2

Você pode usar

find /my-directory -type f -mtime +14 -print0 2>/dev/null | xargs -r0 rm

Explicação:

2> /dev/null significa redireciona o stderr para /dev/null .

  • /dev/null é o dispositivo nulo que recebe qualquer entrada que você quer e joga fora. Pode ser usado para suprimir qualquer saída.
por 20.06.2016 / 12:53
2

print0 e xargs -r 0 são inúteis aqui, find tem essa capacidade incorporada:

[ -d /my-directory ] && find /my-directory -type f -mtime +14 -exec rm {} +

ou, como você está usando o GNU find, esta variante sugerida por @terdon:

[ -d /my-directory ] && find /my-directory -type f -mtime +14 -delete
    
por 20.06.2016 / 13:49

Tags