私はこの行動を生み出そうとしています:
grep 192.168.1 *.txt
Xargsを介してgrepに文字列を渡すことにより、最初のパラメーターとしてではなく最後に文字列を渡します。
echo 192.168.1 | xargs grep *.txt
着信文字列を末尾ではなく「grep」と「*」の間に置くようにxargs(または類似の何か)に指示する必要があります。
どうすればよいですか?
$ echo 192.168.1. | xargs -I{} grep {} *.txt
サンプルファイル:
$ cat {1..3}.txt
192.168.1
192.168.1
192.168.1
実行例:
$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.
別のアプローチ:
find . -name \*.txt -print0 | xargs -0 grep 192.168.1
これにより、ファイル名が多すぎても、シェルのコマンドラインの長さがオーバーフローすることはありません。 xargs
/grep
とスペースを含むファイル名を混同しないようにするには、-print0
および-0
オプションは、見つかった各名前をLFではなくnullで示します。