2010-03-25 7 views
0

J'ai un script que j'exécute depuis le répertoire home pour rechercher tous les fichiers appelés "script.sh" qui contiennent le script. chaîne "pastèque". Il ne trouve rien mais je peux voir clairement ces scripts dans les sous-répertoires. Quelqu'un pourrait-il s'il vous plaît suggérer un changement à la commande que je utilise:Pourquoi mon script shell ne trouve rien (trouver. -name script.sh | grep watermelon)

find . -name script.sh | grep watermelon 

Répondre

1

Vous devez utiliser xargs:

find . -name script.sh | xargs grep watermelon 

xargs modifier le comportement de recherche dans les fichiers, plutôt que de chercher seulement dans les noms des fichiers.

2

find renvoie le nom de fichier qu'il trouve par défaut. Si vous voulez effectuer une recherche dans les fichiers, vous devez tuyau à xargs ou utiliser les -exec et -print prédicats:

find . -name script.sh -exec grep -q watermelon {} \; -print 
1

utilisation -type f pour indiquer le fichier

find . -type f -name "script.sh" -exec grep "watermelon" "{}" +; 

ou si vous avez bash 4

shopt -s globstar 
grep -Rl "watermelon" **/script.sh 
Questions connexes