GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver tous les fichiers dont le nom contient une chaîne

Le -maxdepth l'option doit être avant le -name option, comme ci-dessous.,

find . -maxdepth 1 -name "string" -print

Utilisez find :

find . -maxdepth 1 -name "*string*" -print

Il trouvera tous les fichiers dans le répertoire courant (supprimez maxdepth 1 si vous le voulez récursif) contenant "string" et l'imprimera à l'écran.

Si vous voulez éviter que les fichiers contiennent ':', vous pouvez taper :

find . -maxdepth 1 -name "*string*" ! -name "*:*" -print

Si vous souhaitez utiliser grep (mais je pense que ce n'est pas nécessaire dans la mesure où vous ne voulez pas vérifier le contenu du fichier) vous pouvez utiliser :

ls | grep touch

Mais, je le répète, find est une solution meilleure et plus propre pour votre tâche.


Utilisez grep comme suit :

grep -R "touch" .

-R signifie récurrence. Si vous préférez ne pas entrer dans les sous-répertoires, ignorez-les.

-i signifie "ignorer la casse". Vous trouverez peut-être que cela vaut la peine d'essayer également.


find $HOME -name "hello.c" -print

Cela recherchera tout le $HOME (c'est-à-dire /home/username/ ) système pour tous les fichiers nommés "hello.c" et affichez leurs noms de chemin :

/Users/user/Downloads/hello.c
/Users/user/hello.c

Cependant, il ne correspondra pas à HELLO.C ou HellO.C . Pour faire correspondre est insensible à la casse, passez le -iname comme suit :

find $HOME -iname "hello.c" -print

Exemples de sorties :

/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c

Passez le -type f option pour rechercher uniquement des fichiers :

find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print

Le -iname fonctionne sur la commande de recherche de version GNU ou BSD (y compris OS X). Si votre version de la commande find ne prend pas en charge -iname , essayez la syntaxe suivante en utilisant grep commande :

find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"

OU essayez

find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print

Exemples de sorties :

/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c

Linux
  1. Supprimer tous les fichiers sauf dans un certain sous-répertoire avec Find ?

  2. Comment trouver tous les fichiers qui ne contiennent pas de chaîne de texte ?

  3. Comment trouver tous les fichiers avec un répertoire parent particulier sous Linux ?

  4. Répertorier tous les fichiers d'images graphiques avec rechercher ?

  5. Comment puis-je trouver tous les fichiers contenant du texte spécifique sous Linux ?

Commande de recherche Linux avec des exemples pratiques

Retrouver les fichiers perdus avec Scalpel

Comment trouver des fichiers contenant une chaîne de texte spécifique sous Linux

Comment rechercher tous les fichiers avec une taille de fichier de zéro (0) octet dans un répertoire de manière récursive

Comment trouver tous les fichiers se terminant par .rb avec Linux ?

Trouver des répertoires contenant tous les fichiers antérieurs à X ?