Locate fait une recherche dans la base de données et pas sur le disque.
$ locate nom_du_fichier_ou_dossier
On peut au préalable mettre à jour la base de données
$ updatedb
La syntaxe quand on utilise find pourrait être traduite ainsi: find "où" "quoi" "que faire avec"
seul le paramètre "quoi" est obligatoire.
Si "que faire avec" n'est pas renseigné c'est "-printf" qui est utilisé par défaut ( voir utilisation avancée ).
$ find -name "*.jpg"
$ find /var/log/ -name "*log*"
$ find / -name "toto.png"
$ find / -size +10M
M = Mo, k = ko, G = Go
Chercher un fichier .odt ouvert il y a moins de 7 jours
$ find -name "*.odt" -atime -7
Chercher un fichier ouvert il y a plus de 10 jours
$ find -atime +10
$ find -name "toto" -type d
- d pour directories (dossier)
- f pour file (fichier)
$ find -name "*.avi" -printf "%p - %u\n"
- %p affiche le nom du fichier
- %u affiche le nom du propriétaire
- \n saute une ligne
Compter tous les éléments du répertoire courant:
$ find ./ | wc -l
Compter tous les fichiers du répertoire courant:
find ./ -type f | wc -l
Compter tous les dossiers du répertoire courant:
find ./ -type d | wc -l
$ find ~/temp/ -name "*.jpg" -delete
/!\ pas de confirmation /!\
$ find ~ -name "*.jpg" -exec chmod 600 {} \;
- la commande ne doit pas être entre guillemets ""
- les {} seront remplacés par le nom des fichiers.
- la commande se termine obligatoirement par \;
Avec -exec la commande est silencieuse, il est possible de demander confirmation pour chaque fichier trouvé en utilisant -ok à la place de -exec.
$ find /arbor/escence -type f -exec grep -H 'chaine' {} \;
$ find /arbor/escence -type f -exec grep -i "phrase a chercher" {} \; -print
Dans cet exemple nous remplaçons la chaine <div class="maclass"\>
par <div id="monid"\>
dans tous les fichiers .php de l'emplacement courant.
$ find . -name "*.php" -print | xargs sed -i 's/<div class="maclass">/<div id="monid">/g'
$ find rep/ -type f -name fichier.txt -exec rm {} \;
Un récapitulatif et de nombreux exemples d'utilisation de "find" sur admin-linux.fr
Voir aussi la commande grep
Afficher la 532 ème ligne de fichier.txt
$ sed -n '532p' fichier.txt
ou
$ awk 'NR==532' fichier.txt