My Personal Wiki

La théorie, c'est quand on sait tout et que rien ne fonctionne.... La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

Outils pour utilisateurs

Outils du site


linux:commande:shell:find

Commande Find


Voici une commande assez sympas pour rechercher des fichiers ou répertoire
ayant par exemple comme ACL unix 664 soit rw-rw-r–.

find & ACL fichier

Voici la commande pour rechercher des fichiers:

   sudo find /Volumes/DATAS/ -type f -acl -perm 664 >> /Volumes/DATAS/listACL664.txt

find & ACL répertoire

Voici la même commande pour les repertoires:

   sudo find /Volumes/DATAS/STUDIO/ -type d -acl -perm 664 >> /Volumes/DATAS/listACL664.txt

Explication:

find est la commande de recherche, -type précise le type exemple f pour Fichier ou d pour Directory,
-acl -perm est le type d'acl avec la permission a rechercher exemple -acl -perm 664 soit (rw-rw-r–),
“> > /Volumes/DATAS/liste.txt” redirige le résultat vers un fichier texte (liste.txt) dans /Volumes/DATAS/.
Cette Commande peut être trés utile quand vous rencontrez des soucis avec les droits
sur les fichiers ou répertoires.


Rech & Supression

voici des commandes spécifiques qui permettent de rechercher des fichiers ou répertoire
puis de les supprimer

find . -name '@Transcode' -type d -exec rm -r “{}” \;
find . -name '.@__thumb' -type d -exec rm -r “{}” \;
find . -name '.DS_Store' -delete
find . -name '._.DS_Store' -delete 

Suppression de fichier avec une extension spécifique et une date donnée.

find /mnt/GormanBKP -name "*.zip" -type f -mtime +120 -exec rm -f {} \;

Cette commande va rechercher tout les fichier .zip dans /mnt/GormanBKP et supprimer ceux plus vieux que 120 Jours.

Peux s'appliquer à chaque type de répertoire ou fichier

Attention tout fichier ou répertoire supprimé est irrecuperable


Rechercher et Peser

Dans cette exemple je cherche à peser tout les fichiers .png dans un répertoire donnée

find /mnt/GandalMp3/ -name "*.png" -type f -exec du -ch {} + | grep total$

Afiicher sous la forme:

1,8M    total


Rechercher Filtrer et Ajouter

Dans cette exemple je cherche tout les fichiers dans un répertoire donnée et je rajoute aux resultat de recherche une ligne avant chaque resultat
Voici un exemple:

 find /mnt/GandalVideos/Films/ | cut -c18- | sed 's/^/ url.monsite.fr/'

Resultat

 url.monsite.fr/Films/American.Gangster.avi
 url.monsite.fr/Films/Hors de portee.2015.avi
 url.monsite.fr/Films/The.Transporter.Refueled.2015.avi
 url.monsite.fr/Films/House.At.The.End.Of.The.Street.avi

Si je décompose:

find /mnt/GandalVideos/Films/ | cut -c18-

Resultat:

/Films/Limitless.avi
/Films/Hypertension 2.avi
/Films/A.Dark.Truth.avi

Si je décompose:

find /mnt/GandalVideos/Films/
/mnt/GandalVideos/Films/The.Dark.Knight.Rises.CD2.avi
/mnt/GandalVideos/Films/Extraction.2016.avi
/mnt/GandalVideos/Films/Killing.Them.Softly.avi

Rechercher et Profondeur

Avec une profondeur maximum:
Je cherche avec une profondeur maximum de 1 répertoire (-maxdepth 1), tout ceux qui on une date de modification inférieur ou égale à 40 Jours dans /mnt/BigHeroMp3/

find /mnt/BigHeroMp3/ -maxdepth 1 -type d -mtime -40 | cut -c17-1000 | sort |
ACDC
Justice
Opolopo

Rechercher et Remplacer

Renommer des fichiers ou répertoires avec un espace dans le nom et les renommer en changeant les espace par des points .

for file in *\ *; do mv "$file" "${file// /.}" ; done

version récursive

find . -type f -name "* *" | while read file; do
    newname=$(echo "$file" | sed 's/ /./g')
    mv "$file" "$newname"
done

Recherche des fichiers avec des espaces dans leur nom

find . -type f -name "* *" -print

Recherche des repertoires avec des espaces dans leur nom

find . -type d -name "* *" -print

Les deux en même temps

find . -name "* *" -print

Rechercher par utilisateur

find . -user sylvain -print

récursif en ciblant un répertoire avec changement de propriétaire:

find /votre/repertoire/ -user sylvain -exec sudo chown paul:paul {} +

sylvain 2025/09/23 19:13

linux/commande/shell/find.txt · Dernière modification : de sylvain

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki