J'essaie de produire ce comportement:
grep 192.168.1 *.txt
En passant une chaîne dans grep via Xargs mais cela se passe à la fin plutôt qu'en tant que premier paramètre.
echo 192.168.1 | xargs grep *.txt
J'ai besoin de dire à xargs (ou quelque chose de similaire) de mettre la chaîne entrante entre 'grep' et '*' au lieu de la fin.
Comment puis-je faire cela?
$ echo 192.168.1. | xargs -I{} grep {} *.txt
Exemples de fichiers:
$ cat {1..3}.txt
192.168.1
192.168.1
192.168.1
Exemple d'exécution:
$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.
Une autre approche:
find . -name \*.txt -print0 | xargs -0 grep 192.168.1
Cela ne dépassera pas la longueur de la ligne de commande du shell avec trop de noms de fichiers. Pour éviter de confondre xargs
/grep
avec des noms de fichier comportant des espaces, -print0
et -0
les options délimiteront chaque nom trouvé avec un null plutôt qu'un LF.