La commande history va retourner la liste de toutes les commandes tapées par l'utilisateur courant depuis l'installation de la machine hôte.
$ history
281 sudo apt install webp
282 cwebp -q 50 MonthyPython-cadre.png -o MonthyPython-cadre.webp
283 cd ../divers/
284 cwebp -q 50 soroban-on-line.jpg -o soroban-on-line.webp
285 cwebp -q 100 soroban-on-line.jpg -o soroban-on-line.webp
286 cd ../../app/bouliers/
287 ls
288 cwebp -q 75 bg.jpg -o bg.webp
289 cwebp -q 75 compteur_citroen-cx-2000.png -o compteur_citroen-cx-2000.webp
290 cwebp -q 90 compteur_citroen-cx-2000.png -o compteur_citroen-cx-2000.webp
291 cwebp -q 100 compteur_citroen-cx-2000.png -o compteur_citroen-cx-2000.webp
292 ssh boby@100.101.102.103
293 man img2webp
294 man webpmux
295 cd Images/
296 ls
297 cd vrac/
On relance une commande avec le numéro d'une commande précédée d'un point d'exclamation.
$ !282
L'emplacement et le nom du fichier où est stocké l'historique des commandes dépendra de votre distribution et de votre shell. ( ~/.bash_history )
Plutôt qu'une recherche dans l'historique, on peut préférer la combinaison de touches [ctrl]+[r] puis tapez quelques caractères de la commande recherchée:
(reverse-i-search)`pin': ping gogolplex.com
Renouveler [ctrl]+[r] pendant une recherche affichera l’occurrence précédente s'il y en a.
(reverse-i-search)`pin': ping gogolplex.org
Une astuce avec cette méthode consiste à placer un mot clé en commentaire de commande grâce au caractère # comme ceci:
$ ma --commande -o trop/dur/a/retenir #mot_cle
.
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"
Pour une recherche insensible à la casse (majuscule et minuscules confondues) utilisez l'option "-iname" au lieu de "-name".
$ 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