Table des matières
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
