find

Sélection des fichiers rpm d'un dossier et application pour chacun d'entre eux de la commande mv pour les déplacer dans un autre dossier.

find . -name "*.rpm" | xargs -n 1 -I {} mv {} /data/rpm_packages

Sélection des fichiers cachés d'un ancien répertoire /home pour les copier sur le nouveau /home avec rsync.

find /mnt/data/romain/ -maxdepth 1 -name ".*" | xargs -n 1 -I {} rsync -av {} /home/romain/

Vérification de la conformité des liens symboliques (pointent bien sur un fichier ou un dossier).

find /data -type l -exec ls -l {} \; | awk '{print $NF}' | xargs -n 1 ls -l 1>/dev/null

Cette commande récupère le fichier ou le dossier pointé par le lien et applique la commande ls -l. Si le lien est mort, la cible n'existe pas.

Liste des derniers fichiers modifiés dans les 30 dernières minutes.

find / -not -path '/sys*' -not -path '/dev*' -not -path '/proc*' -mmin -30

Rechercher un caractère dans les fichiers.

find /root -type f -name "*" -exec grep -l 'toto' {} \;

Rechercher des fichiers xml ou log appartenant à une date précise.

find / -type f \( -name "*.log" -o -name "*.xml" \) -printf "%h/%f\t%CY-%Cm-%Cd\n" 2>/dev/null | grep ${date} | awk '{print $1}'

L'idée est d'utiliser la fonction printf pour formater la date et ainsi pouvoir filtrer sur les dates affichées.

Autres solutions basées sur des version de find différentes : http://stackoverflow.com/questions/158044/how-to-use-find-to-search-for-files-created-on-a-specific-date

Suppression de fichiers ou dossiers plus vieux qu'un fichier créé à une date voulue.

touch -t 201208010000 dummyfile
find /tmp -type f ! -newer /tmp/dummyfile -delete
touch -t 201208010000 dummyfile
find /tmp -type d ! -newer /tmp/dummyfile -exec rm -f {} \;
touch -t 201208010000 dummyfile && find /tmp -type f ! -newer /tmp/dummyfile -exec rm -f {} \; && touch -t 201208010000 dummyfile && find /tmp -type d ! -newer /tmp/dummyfile -exec rm -rf {} \; && rm -rf /tmp/dummyfile