find . -name "*.php" | xargs grep -i -n "searchstring" >output.txt Here I am trying to write data into a file which is not happening...
8 Réponses :
a l'air bien pour moi. Que se passe-t-il si vous supprimez > sortie.txt code>? P>
Que diriez-vous d'ajouter des résultats en utilisant Je n'ai pas de boîte Linux avec moi maintenant, alors je vais essayer d'improviser. p> Le Peut-être que vous vouliez dire depuis De cette façon, votre code final serait P> >> code>?
xargs grep -i -n "searchstring" code> me dérange un peu. p>
xargs -i {} grep -i "Searchstring" {} code> ou juste
xargs grep -i "searchstring" code>? p>
-n code> comme l'argument de grep vous donnera Seules les lignes de numéro, je doute que c'est ce dont vous aviez besoin. p>
find . -name "*.php" | xargs grep -i "searchstring" >> output.txt
@Rajesh: alors votre première partie semble problématique. Vous devriez écrire votre code itérativement, afin que vous puissiez voir ce qui se passe vraiment. Dans ce cas, vous devriez avoir essayé trouver. -Name "* .php" code> Pour voir si vous obtenez des résultats. Que se passe-t-il si vous essayez
trouver. -Name "* php" -type f code>?
Vous pouvez utiliser grep -include = *. PHP ... code> Pour filtrer par extension afin d'éviter le
Rechercher | Xargs Code> La laideur
find . -name "*.php" -exec grep -i -Hn "function" {} \; >output.txt
Je suppose que vous avez des espaces dans les noms de fichiers PHP. Si vous les remettez à Il y a une solution pour cela. grep code> via
xargs code> de la manière que vous faites, les noms sont divisés en pièces et
grep code> interprète ces pièces comme noms de fichiers qui Il ne peut alors pas trouver.
trouver code> a une option
-print0 code> qui indique code> pour séparer les résultats par un octet nul et
xargs code> a un
-0 code> option qui indique
xargs code> s'attendre à un octet nul en tant que séparateur. Utilisant ceux que vous obtenez: p>
essayez d'utiliser la ligne tamponnée p>
grep -line-tamponnée p>
[modifier] p>
J'ai couru votre commande originale sur ma boîte et cela semble bien fonctionner, alors je ne suis plus sûr. p>
Si vous recherchez des arbres de code source, veuillez envisager d'utiliser ACK . Pour faire ce que vous faites dans ACK, peu importe d'espaces dans des noms de fichiers, vous feriez:
ack --php -i searchstring > output.txt
J'utilise toujours la commande suivante. Il affiche la sortie sur une console et crée également le fichier p>
grep -r "chaîne à rechercher". 2> & 1 | Tee /Your/path/to/file/filename.txt p>
Vérifiez l'espace disque libre par
$ df -Th
Quelle est l'erreur que vous obtenez? Pourriez-vous que vous n'ayez pas la permission de créer une sortie.txt?
Que se passe-t-il lorsque vous exécutez la commande sans le "> de la sortie.txt"?
@Shawn, ce n'est pas vrai: la redirection> est destinée à Xargs, et non à chaque grep qui fonctionne, tous les greps écrivent dans le même fichier de sortie.
@Lars true. Que pensais-je ... supprimera le commentaire précédent afin qu'il ne provoque aucune confusion.