Utiliser `find` sur un directory non existant

Existe-t-il un moyen simple de faire cela silencieusement, si /my-directory n'existe pas?

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

Versions:

  • find: GNU findutils 4.5.10
  • bash 4.2.53

Vous pouvez rejeter le rapport d'erreur de find avec 2>/dev/null , ou vous pouvez éviter d'exécuter la command du tout:

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

Comme une légère optimization et un code plus clair, certaines versions de la find – y compris la vôtre – peuvent effectuer le rm pour vous directement:

 test -d /my/directory && find /my-directory -type f -mtime +14 -delete 

Vous pouvez utiliser,

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

Explication:

2> /dev/null signifie redirect stderr vers /dev/null .

  • /dev/null est le périphérique null qui prend toute input que vous voulez et le jette loin. Il peut être utilisé pour supprimer toute sortie.

print0 et xargs -r 0 sont inutiles ici, find a cette capacité embeddede:

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

ou, comme vous utilisez GNU find, cette variante proposée par @terdon:

 [ -d /my-directory ] && find /my-directory -type f -mtime +14 -delete