53 私はこの動作を生成しようとしています: grep 192.168.1 *.txt Xargsを介して文字列をgrepに渡しますが、最初のパラメーターとしてではなく、最後に進みます。 echo 192.168.1 | xargs grep *.txt xargs(または同様のもの)に、入力文字列を末尾ではなく「grep」と「*」の間に置くように指示する必要があります。 どうすればいいですか? xargs — アンディブート ソース ファイルを見つけてからxargsを使用してそれらを移動するにはどうすればよいですか?。 — マナトワーク
83 $ 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. — slm ソース おかげで、うまくいきました。しかし、なぜ?何を-Iに置き換えますか?わかりません。 — e18r 6 中括弧はプレースホルダーのようです。{}を好きなものに置き換えることができます:echo 192.168.1。| xargsの-I pholderグレップpholder * .TXT — denormalizer
3 別のアプローチ: find . -name \*.txt -print0 | xargs -0 grep 192.168.1 これにより、ファイル名が多すぎてもシェルのコマンドラインの長さがオーバーフローしません。xargs/ grepがスペースを含むファイル名と混同しないようにするために-print0、-0オプションは、検出された各名前をLFではなくnullで区切ります。 — ビル・ホッグ ソース