Dans un article récent d'Opensource.com, Lewis Cowles a présenté le find
commande.
find
est l'un des programmes de ligne de commande les plus puissants et les plus flexibles de la boîte à outils quotidienne, il vaut donc la peine d'y consacrer un peu plus de temps.
Au minimum, find
prend un chemin pour trouver des choses. Par exemple :
find /
trouvera (et imprimera) chaque fichier sur le système. Et comme tout est un fichier, vous aurez beaucoup de résultats à trier. Cela ne vous aide probablement pas à trouver ce que vous cherchez. Vous pouvez modifier l'argument path pour affiner un peu les choses, mais ce n'est toujours pas vraiment plus utile que d'utiliser le ls
commande. Vous devez donc réfléchir à ce que vous essayez de localiser.
Peut-être voulez-vous trouver tous les fichiers JPEG dans votre répertoire personnel. Le -name
L'argument vous permet de restreindre vos résultats aux fichiers qui correspondent au modèle donné.
find ~ -name '*jpg'
Mais attendez! Que se passe-t-il si certains d'entre eux ont une extension en majuscule ? -iname
est comme -name
, mais il est insensible à la casse.
find ~ -iname '*jpg'
Génial! Mais le schéma de nom 8.3 est tellement 1985. Certaines images peuvent avoir une extension .jpeg. Heureusement, nous pouvons combiner des modèles avec un "ou", représenté par -o
.
find ~ ( -iname 'jpeg' -o -iname 'jpg' )
Nous nous rapprochons. Mais que se passe-t-il si vous avez des répertoires qui se terminent par jpg ? (Pourquoi avez-vous nommé un répertoire bucketofjpg
au lieu de pictures
me dépasse.) Nous pouvons modifier notre commande avec le -type
argument pour rechercher uniquement les fichiers.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f
Ou peut-être aimeriez-vous trouver ces répertoires aux noms étranges afin de pouvoir les renommer plus tard :
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d
Il s'avère que vous avez pris beaucoup de photos ces derniers temps, alors limitons-nous aux fichiers qui ont été modifiés au cours de la semaine dernière.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Vous pouvez faire des filtres de temps en fonction de l'heure de changement d'état du fichier (ctime
), heure de modification (mtime
), ou le temps d'accès (atime
). Ceux-ci sont en jours, donc si vous voulez un contrôle plus fin, vous pouvez l'exprimer en minutes à la place (cmin
, mmin
, et amin
, respectivement). À moins que vous ne sachiez exactement l'heure que vous voulez, vous préfixerez probablement le numéro avec +
(plus de) ou –
(moins de).
Mais peut-être que vous ne vous souciez pas de vos photos. Peut-être que vous manquez d'espace disque, vous voulez donc trouver tous les fichiers gigantesques (définissons cela comme "supérieur à 1 gigaoctet") dans le log
répertoire :
find /var/log -size +1G
Ou peut-être voulez-vous trouver tous les fichiers appartenant à bcotton dans /data
:
find /data -owner bcotton
Vous pouvez également rechercher des fichiers en fonction des autorisations. Peut-être souhaitez-vous rechercher tous les fichiers lisibles par tous dans votre répertoire personnel pour vous assurer de ne pas sur-partager.
find ~ -perm -o=r
Ce message ne fait qu'effleurer la surface de ce que find
peut faire. La combinaison de tests avec la logique booléenne peut vous donner une flexibilité incroyable pour trouver exactement les fichiers que vous recherchez. Et avec des arguments comme -exec
ou -delete
, vous pouvez avoir find
agir sur ce qu'il... découvre. Avoir une find
préférée expressions? Partagez-les dans les commentaires !