2010-08-31 8 views
3

Comment écrire une commande bash qui trouve tous les fichiers du répertoire courant contenant le mot "foo", quel que soit le cas?commande unix bash

+2

Pour la fermeture des électeurs, cela tombe fermement dans le domaine de la programmation shell dans mon esprit. – ysth

+5

fichiers qui contiennent "foo", les fichiers qui contiennent le mot foo, ou les noms de fichiers contenant foo? et par répertoire courant, voulez-vous dire juste dans le répertoire courant, ou le répertoire courant et tous les sous-répertoires? Qu'en est-il des fichiers cachés, voulez-vous les chercher aussi? – George

Répondre

1

En supposant que vous voulez rechercher dans les fichiers (pas les noms de fichiers)

Si vous ne voulez que le répertoire courant à rechercher (pas l'arbre)

grep * -nsie "foo" 

si vous souhaitez numériser l'ensemble arbre (à partir du répertoire courant)

grep . -nsrie "foo" 
-1

trouver. -type f | grep "foo"

+0

qui trouverait FILENAMES qui contiennent "foo", texte non contenu. (et recurse l'arborescence de répertoires) – ocodo

+0

et il n'y a pas besoin d'utiliser grep.use find -iname ou -name – ghostdog74

+0

Si vous voulez envelopper dans un script de sorte que vous pouvez simplement taper "findnocase foo", il devrait ressembler à ceci: trouver. -type f | grep -i $ 1 –

0
shopt -s nullglob 
shopt -s nocaseglob 
for file in *foo* 
... 
... 
.. 
2

Si vous voulez "foo" pour la vérification par rapport aux concours des fichiers ., procédez comme suit:

grep . -rsni -e "foo" 

pour plus d'options (-I, - T, ...) voir man grep.

+1

Le PO a demandé de ne pas tenir compte de la casse. Vous avez oublié '-i'. –

+0

Merci. Modifié. – bitmask

0

Essayez:

echo *foo* 

imprimera les noms de fichier/dir correspondant *foo* dans le répertoire courant, qui se trouve correspondre un nom contenant 'foo'.

0

J'ai toujours utilisé cette petite commande shell:

gfind() { if [ $# -lt 2 ]; then files="*"; search="${1}"; else files="${1}"; search="${2}"; fi; find . -name "$files" -a ! -wholename '*/.*' -exec grep -Hin ${3} "$search" {} \; ; } 

vous l'appelez soit gfind '*php' 'search string' ou si vous voulez rechercher tous les fichiers gfind 'search string'