commande find et rechercher des fichiers

Aller directement à   find - grep - dpkg (paquets) - recoll

rechercher des fichiers

source Rechercher des fichiers en ligne de commande

find - la recherche systématique

a accès à toute l'arbo - attention aux délais.

grep - rechercher dans le texte

si formats proches du format texte (txt, rtf, abw)

locate/mlocate - avec base de donnée

Que vous ayez l'un ou l'autre de ces paquets, ou les deux paquets installés,les commandes en console et les fichiers de configuration restent les mêmes.
Utilisent une base de données indexées listant tous les répertoires et fichiers du champ concerné située à /var/lib/mlocate/mlocate.db

  • mlocate ajoute un horodatage qui accélére significativement la ré-indexation.
  • mlocate respecte les droits utilisateurs pour des raisons de sécurité (pas d'info sur /root par exemple pour user).

Par défaut (/etc/updatedb.conf à modifier sinon, champ "PRUNEPATH") recherche sur / sauf dossiers sous /media et certains fichiers temporaires. L'espace de recherche peut inclure d'autres systèmes de fichiers (Fat32, reiserfs, etc.) pourvu qu'ils soient montés - par exemple sur /mnt (et non /media) + maj chaque jour.

sudo updatedb           maj db
locate bidule           affichera alors tous les chemins incluant le mot bidule

 

trop de résultats?

Faire par ex    locate icon | less    ou     locate icon | grep firefox | less

 

 


les commandes en détails (man, syntaxe)

find [chemin...] [expression]

Le 1er argument commençant par `-', `(', `)', `,', ou `!' est considéré comme le début de l'expression, tous les arguments précédents sont des chemins à parcourir. Tous les arguments ultérieurs sont considérés comme le reste de l'expression rationnelle. de point de départ. Si aucune expression n'est fournie, find utilise l'expression `-print' par défaut.
find se termine avec le code de retour 0 si tous les fichiers ont pu être examinés correctement, et supérieur à 0 si une erreur s'est produite.

L'expression est constituée d'options (affectant l'ensemble des opérations plutôt que le traitement d'un fichier particulier, et renvoyant toujours vrai), de tests (renvoyant une valeur vraie ou fausse), et d'actions (ayant des effets de bords et renvoyant une valeur vraie ou fausse), tous ces éléments étant séparés par des opérateurs. Quand un opérateur est manquant, l'opération par défaut -and est appliquée. Si l'expression ne contient pas d'action  autre que -prune, find applique l'action -print par défaut sur tous les fichiers pour lesquels l'expression est vraie.

options

Toutes les options renvoient toujours la valeur vraie. Elles ont toujours un effet global, plutôt que de s'appliquer uniquement à leur emplacement dans l'expression.

ex: -daystart -depth (traite d'abord les sous-répertoires avant le répertoire lui-même) -help -maxdepth n

tests (arguments numériques)

+n   sup à n     -amin n   dernier accès au fichier il y a n minutes.
-n    inf à n   
n     =n            -mmin Fichier dont les données ont été modifiées il y a n minutes.

-maxdepth n     Descendre au plus n niveaux (n étant un entier positif ou nul), dans les répertoires parcourus. `-maxdepth 0' signifie que les tests et les actions ne s'appliquent qu'aux arguments de la ligne de commande.*

-mount  (ou -xdev) Ne pas parcourir les répertoires situés sur d'autres systèmes de fichiers.

-path motif         Fichier dont le nom complet correspond au motif fourni. Lors du développement des méta-caractères, `/' et `.' ne sont pas traités différemment des autres caractères, ainsi :  find . -path './sr*sc' affichera l'élément de répertoire intitulé './src/misc' (s'il en existe un).

Pour ignorer une arborescence complète de répertoires, utilisez l'option -prune plutôt que de vérifier chaque fichier de l'arbre. Par exemple, pour ignorer le répertoire `src/emacs' et tous ses sous-répertoires, tout en affichant le nom de tous les autres fichiers: 
find . -path './src/emacs' -prune -o -print

-perm -mode   Fichier ayant au moins toutes les autorisations indiquées dans le mode.
-perm +mode  Fichier ayant certaines des autorisations indiquées dans le mode.

actions

-exec commande      Exécute la commande ; vrai si le code de retour 0 est renvoyé.
-ls  exécute la commande ls à chaque fichier trouvé
-fprint fichier
vrai ; écrit le nom complet dans le fichier. Si fichier n'existe pas au démarrage de find, il est créé. S'il existe, il est écrasé.
Les noms de fichiers ``/dev/stdout'' et ``/dev/stderr'' (sortie standard et sortie des erreurs) sont traités de manière spécifique.
-fprint0 fichier            vrai ; comme -print0 mais écrit dans le fichier comme le fait -fprint.
-fprintf fichier format   vrai ; comme -printf mais écrit dans le fichier comme le fait -fprint.
-ok commande ;
comme -exec mais interroge d'abord l'utilisateur (en utilisant l'entrée standard). Si la réponse ne commence pas par `y' ou `Y', la commande n'est pas exécutée, et le test devient faux.

Opérateurs fréquents

  • -a : Opérateur ET
  • -o : Opérateur OU
  • ! ou -not : Opérateur NOT

Options les plus fréquentes :

  • -name : Recherche d'un fichier par son nom
  • -iname : Même chose que -name mais insensible à la casse
  • -type : Recherche de fichier d'un certain type
  • -atime : Recherche par date de dernier accès
  • -mtime : Recherche par date de dernière modification
  • -link : Recherche du nombre de liens au fichier
  • -user : Recherche de fichiers appartenant à l'utilisateur donné
  • -group : Recherche de fichiers appartenant au groupe donné

 

voir aussi locate, slocate (avec index, et sans regarder proprio et perm, qui ne sont pas enregistré ds cet index) et qu'on maj par updatedb

 

Exemples

find -name *monfichier*.ogg Recherche un fichier contenant "monfichier" et ayant pour extention ".ogg"
find . -name "*.c" tous les fichiers ayant une extension .c
find . -mtime -5 fichiers du répertoire courant qui ont été modifiés entre maintenant et il y a 5 jours
find /home/ -mtime -1 \! -type d uniquement les fichiers      ! -type d signifie pas un répertoire
ayant été modifiés ces dernières 24h
find . ! -user root tous les fichiers n'appartenant pas à l'utilisateur root
find . \( -name '*.wmv' -o -name '*.wma' \) -exec rm {} \; Recherche et supprime tous les fichiers WMA et WMV trouvés
find . \( -type f -exec sudo chmod 664 "{}" \; \) , \( -type d -exec sudo chmod 775 "{}" \; \) Modifie récursivement les droits en 664 sur les fichiers et en 775 sur les répertoires en une seule instruction

 


grep

Options les plus fréquentes :
  • -c : Retourne le nombre de lignes au lieu des lignes elles mêmes
  • -n : Retourne les lignes préfixées par leur numéro
  • -i : Insensible à la casse
  • -r : Recherche récursivement dans tous les sous-répertoires ; On peut utiliser la commande rgrep
  • -G : Recherche en utilisant une expression rationnelle basique (option par défaut)
  • -E : Recherche en utilisant une expression rationnelle étendue ; On peut utiliser la commande egrep
  • -F : Recherche en utilisant une chaîne fixe ; On peut utiliser la commande fgrep
Ex:  grep -n montexte monfichier  retourne toutes les lignes ainsi que leur numéro où montexte apparait dans monfichier
 

autres types de recherches

dans le packages

dpkg -L bidule   paquets Debian. bidule ne doit pas comporter de *   

 

aptitude search chaine_de_carac   aptitude = APT renvoie la liste des paquets contenant la chaîne de caractère chaine_de_carac dans leur nom
La ou les lettres renvoyées en début de ligne signifient :

  • i     le paquet est installé et toutes ses dépendances sont satisfaites
  • c     le paquet a été supprimé mais ses fichiers de configuration sont toujours présents sur le système
  • p     le paquet et tous ses fichiers de configuration ont été supprimés, ou le paquet n'a jamais été installé
  • v     le paquet est virtuel
  • B     le paquet a des dépendances cassées
  • A     le paquet a été automatiquement installé Décrivez votre nouvelle note ici.

Plus à http://doc.ubuntu-fr.org/aptitude  et  http://algebraicthunk.net/~dburrows/projects/aptitude/doc/fr/index.html

interface graphique (fichiers, emails...)

recoll   http://doc.ubuntu-fr.org/recherche_de_fichiers