find ou la commande à tout faire

Sous linux, quand on cherche des fichiers, il existe la commande find.

Mais cette commande permet de réaliser plus que de simple recherches : elle permet également d’appliquer des outils directement sur les résultats de recherche.

ça paraît vague dit comme ça, mais cette commande est M*A*G*I*Q*U*E* et fait partie du BA-ba à connaître sous linux quand on est DevOps.

Quelques exemples :

  • Créer un fichier checksum sur l’ensemble des fichiers d’une livraison

Une livraison se trouve dans le dossier « livraison/ » et on souhaite générer un fichier checksum au format sha256 :

find livraison/ -type f -exec sha256sum "{}" \;

Il ne reste plus qu’à rediriger la sortie vers un fichier, sans oublier de rediriger éventuellement la sortie d’erreur.

Et les erreurs

find . -type d -perm 700 -exec ls -ld "{}" \; | awk '$3 != "oasitqtc"{print $3, $NF} ' | sort
find . -type d -user $LOGNAME | grep ctrl
find . -type d -user $LOGNAME -perm 700
find . -type d -user $LOGNAME -perm 700 -exec chmod -R g+rwx "{}" \;
  • Suppression de fichiers thumbs.db et Thumbs.db appartenant à des comptes divers
sudo find . -type f -iname "Thumbs.db" -exec rm "{}" \;
  • Rechercher des liens morts
find . -type l ! -exec test -e {} \; -print