私はこの動作を生成しようとしています。
grep 192.168.1 *.txt
Xargsを介して文字列をgrepに渡しますが、最初の引数ではなく最後に渡します。
echo 192.168.1 | xargs grep *.txt
着信文字列を末尾ではなく「grep」と「*」の間に入れるには、xargs(または同様のもの)に指示する必要があります。
どうすればいいですか?
答え1
$ echo 192.168.1. | xargs -I{} grep {} *.txt
はい
サンプルファイル:
$ cat {1..3}.txt
192.168.1
192.168.1
192.168.1
例を実行してください:
# example uses {} but you can use whatever, such as -I{} or -Ifoo
$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.
答え2
別の方法:
find . -name \*.txt -print0 | xargs -0 grep 192.168.1
ファイル名が多すぎても、シェルのコマンドラインの長さはオーバーフローしません。スペースを含むファイル名との混同を避けるために、オプションは、見つかった各名前xargs
を説明するためにLFの代わりにnullを使用します。grep
-print0
-0