Racine carte Index Rechercher Nouvelles Archives Liens A Propos
[Top Bar]
[Bottom Bar]
[Photo de l'Autheur]

Guido Socher

L'auteur: Aime Linux car c'est un système gratuit et apprécie les beaucoup les relations avec la communauté Linux à travers le monde. Il passe son temps libre avec sa petite amie, à écouter les services internatiaunaux de la BBC, roule à bicyclette dans la campagne et adore jouer avec Linux

Sommaire:
Trouver des frichiers d'après leur nom
Vue générale
Trouver des fichiers d'après leur contenu

Trouver des fichiers

[Illustration]

Résumé: Cet article est une introduction sur les recherches de fichiers d'après leur nom ou leur contenu.



Trouver des fichiers d'après leur nom

Vous avez surement déjà été confronté à ce type de problèmes: vous aviez un fichier un peu particulier et vous ne savez plus où il est.

C'est là que la commande find vient à point. Comment l'utiliser? find est bien sur accompagné d'une grande page de manuel, mais jetons un coup d'oeil à quelques "cas normaux ". Pour rechercher un fichier nommé lostfile.txt à partir du répertoire courant et dans toute son l'arborescence:

find . -name lostfile.txt -print

find comprend aussi les jokers. N'oublier pas les guillemets sinon l'interpreteur essaiera de les remplacer avant que find ne les lise. Voici un exemple:

find . -name "lost*" -print

Cette commande peut être plutôt lente si la recherche a lieu dans une grande arborescence. La commande locate s'avèrera alors utile. Elle ne cherche pas vraiment un fichier dans le système, mais dans une base de donnée. C'est beaucoup plus rapide mais la base de donnée peut ne pas être à jour. Dans certaines distributions, la base located est mise à jour toutes les nuits mais vous pouvez bien sûr utiliser manuellement la commande updatedb de temps en temps afin d'effectuer la mise à jour de la base. locate effectue des recherches de sous-chaînes.

locate lostfile

Ce qui trouvera les fichiers lostfile.txt ou mylostfile.txt etc...

Jusqu'ici, nous avons recherché des fichiers dont nous en connaissions exactement le nom. Peut être que le fichier n'était pas lostfile.txt mais lastfile.txt ou leastfile.txt et vous ne vous souvenez plus exactement du nom. Comment le retrouvez quand même? Dans ce cas, il faut utiliser un utilitaire tolérant les fautes appelé ftff. Il recherche un fichier et autorise un certain nombre "d'erreur typographiques". Cette commande trouvera tous ces noms de fichiers légèrement "mal orthographiés":

ftff lostfiles.txt

Le nombre d'erreurs autorisées dépend de la longueur du fichier mais peut aussi être fixée avec l'option -t. Pour autoriser au maximum 2 erreurs et aussi utiliser un joker, tapez:

ftff -t2 "lostfiles*"

Ftff est un programme de ma conception et fait partie d'un paquetage appellé whichman-1.4 qui peut être téléchargé depuis

sunsite.unc.edu/pub/Linux/apps/doctools/whichman-1.4.tar.gz

Parfois, vous voudriez trouver des fichiers dans un arbre dont le nom ne contient pas certains caractères. Par exemple tous les fichiers exepté les .o et .c. Voici quelques façon de le faire:

find . ! -name "*.o" ! -name "*.c" -print
find . -print | fgrep -v '.o' | fgrep -v '.c'
Si vous avez la version gnu de find: find | fgrep -v '.o' | fgrep -v '.c'
find | egrep -v '\.[oc]'

Vue générale du système de fichier

Vous pouvez avoir besoin d'une vue générale du système de fichier à votre disposition. Par exemple, vous avez un nouveau CD et vous voudriez savoir ce qu'il y a dessus. Vous pourriez simplement utiliser ls -R. Personellement, je préfère la solutions suivante par soucis de clarté: tree ( sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz ) dessine un arbre.

tree
ou avec des noms de fichier longs: tree -fF

Bien sûr il y a aussi le bon vieux find. La version gnu de find est, généralement fournie avec Linux, et permet aussi de changer le format d'impression afin, par exemple, d'imprimer la taille du fichier avec son nom:

find . -ls
find . -print ou avec gnu find: find
find . -printf "%7s %p\n"

Il existe aussi un habillage perl de la commande ls qui effectue des choses similaires. Il peut être chargé depuis cet endroit: lsperl.gz. Vous trouverez surement d'autres outils de recherche de fichiers, mais ceux là sont suffisants dans la majorité des cas.

Trouver des fichiers d'après leur contenu (rechercher des chaînes de caractères dans les fichiers)

L'utilitaire standard de recherche de chaînes dans les fichiers est grep/egrep pour les expressions régulières et fgrep pour les chaînes littérales. Pour chercher une expression dans tous les fichiers du répertoire courant, tapez:

egrep -i "expression de recherche" *

Pour rechercher des chaînes dans tous les fichiers de la descendance du répertoire courant, vous pouvez combiner find ou un autre outils de recherche de noms de fichiers avec, par exemple, egrep. Il y a plusieurs façon de le faire:

egrep -i "expression" `find . -type f -print`
find . -type f -exec egrep -i "expression" /dev/null {} \;
find . -type f -print | xargs egrep -i "expression"

Si cela vous semble difficile à mémoriser, vous pouvez télécharger un petit script depuis ici: grepfind.gz. Il s'assure aussi que les caractères non imprimables sont retirés au cas ou egrep aurait traversé un fichier binaire.

Un programme très interessant est agrep. Il marche à la base comme egrep mais effectue des recherches tolérant les fautes. de la sorte, vous pouvez trouver des mots légèrement mal orthographiés. Pour rechercher une expression et autoriser un maximum de 2 erreurs, utilisez:

agrep -i -2 "search exprission" *

Le programme agrep peut être chargé depuis sunsite sunsite.unc.edu/pub/Linux/utils/text/agrep-2.04.tar.Z ou le site original ftp://ftp.cs.arizona.edu/agrep/

Il y a aussi glimpse. C'est un utilitaire de recherche très puissant qui utilise un concept similaire à locate. D'abord, une base de donnée doit être construite, mais alors, les recherches sont très rapides. Pour construire un index de recherche de tous les fichiers du répertoire courant et de sa descendance:

glimpseindex .

Après cela, vous pouvez chercher une chaîne dans tous les fichiers qui ont été précédement indexés

glimpse -i -2 "expression de recherche"

glimpse accepte aussi les fautes (comme agrep) et le -2 autorise deux erreurs. glimpse est disponible à http://glimpse.cs.arizona.edu/


Il y a beaucoup d'utilitaires de recherche disponibles pour Unix et particulièrement pout Linux. Cet article ne se veut pas exhaustif. Si vous êtes interessé par plus de trucs et astuces ou d'autres utilitaires comme ceux que nous avons décrits, regardez les fichiers .lsm à http://sunsite.unc.edu/pub/Linux/utils

Amusez vous bien, bonnes recherches.


Traduit par JohnPerr

Ce site web est maintenu par Miguel Angel Sepulveda
© Guido Socher 1998
LinuxFocus 1998