xargsコマンドで>を使用する方法は?

ジェシー・シー

ディレクトリ内のすべてのファイルをgrepし、そのgrepの出力を別のファイルに書き込むことができるbashコマンドを見つけたいと思います。私の推測では、このようなことをすることだったでしょう

ls -1 | xargs -I{} "grep ABC '{}' > '{}'.out"

しかし、私が知る限り、xargsは二重引用符を好みません。ただし、二重引用符を削除すると、コマンドはコマンド全体の出力を、一連の個別のファイルではなく、「{}」。outという単一のファイルにリダイレクトします。

xargsを使用してこれを行う方法を知っている人はいますか?このgrepシナリオを例として使用して、xargsの問題を説明したので、xargsを使用しないソリューションは私には当てはまりません。

lhunath

これを間違えないでください:

sh -c "grep ABC {} > {}.out"

これは、ファンキーなファイル名を含む多くの条件下で機能しなくなり、正しく引用することは不可能です。あなた{}必見常にコードインジェクションのバグを回避するためのコマンドへの単一の完全に別の引数で。あなたがする必要があるのはこれです:

xargs -I{} sh -c 'grep ABC "$1" > "$1.out"' -- {}

xargs同様に適用されますfind

ちなみに、-0オプションなしでxargsを使用しないでください(データの破壊を心配しない、非常にまれで制御された1回限りのインタラクティブな使用を除く)。

また、解析しないでくださいlsこれまで。グロブを使用するか、find代わりに:http://mywiki.wooledge.org/ParsingLs

find再帰が必要なすべてのものと、その他すべてのグロブを含む単純なループに使用します。

find /foo -exec sh -c 'grep "$1" > "$1.out"' -- {} \;

または非再帰的:

for file in *; do grep "$file" > "$file.out"; done

引用符の適切な使用に注意してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

xargsで複数のコマンドを実行する

分類Dev

xargs -Iコマンドの目的は何ですか?

分類Dev

xargsで複数のコマンドに値を渡す

分類Dev

xargsコマンドでdockerexecを使用して `bash`を実行する

分類Dev

xargsを使用してgitエイリアスでコマンドを表示する

分類Dev

xargs:複数のコマンドで同じ引数を使用する

分類Dev

xargsでエイリアスコマンドを使用するにはどうすればよいですか?

分類Dev

execコマンドはxargsを受け入れず、コマンド入力でハングします

分類Dev

xargsを使用してコマンドの途中で複数の引数を渡す

分類Dev

最初のコマンドエラーでxargsを強制的に停止する

分類Dev

xargsコマンドの-Iオプションの目的は何ですか?

分類Dev

xargsコマンドが「LINE_MAX」アサーションで失敗する

分類Dev

マルチコマンドで使用するための入力変数を含むxargsループ

分類Dev

xargsコマンドは、bashエイリアスで使用するとサイレントに失敗します

分類Dev

xargsを使用して何千ものコマンドを並列に実行する方法は?

分類Dev

このxargsコマンドが機能しないのはなぜですか?

分類Dev

このコマンドをAmazonAWSで実行することは可能ですか?xargs -n 1 curl -O <files.txt

分類Dev

Xargs:3つの別々のxargsコマンドを並行して実行する

分類Dev

DockerビルドでCOPYコマンドを使用する方法は?

分類Dev

`find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

分類Dev

セレンideでIfコマンドを使用する方法は?

分類Dev

コマンドラインで-aを使用する方法は?

分類Dev

コマンドラインでprintfを使用する方法は?

分類Dev

ユーザー入力を必要とするコマンドでxargsを使用するにはどうすればよいですか?

分類Dev

xargsを使用して、一致するたびにコマンド置換で関数を実行するにはどうすればよいですか?

分類Dev

Gradleでcmdコマンドを使用する方法は?

分類Dev

アイテムでAnsibleコマンドを使用する方法は?

分類Dev

CURLでbase64コマンドを使用する方法は?

分類Dev

Ansibleでコマンドstdinを使用する方法は?

Related 関連記事

  1. 1

    xargsで複数のコマンドを実行する

  2. 2

    xargs -Iコマンドの目的は何ですか?

  3. 3

    xargsで複数のコマンドに値を渡す

  4. 4

    xargsコマンドでdockerexecを使用して `bash`を実行する

  5. 5

    xargsを使用してgitエイリアスでコマンドを表示する

  6. 6

    xargs:複数のコマンドで同じ引数を使用する

  7. 7

    xargsでエイリアスコマンドを使用するにはどうすればよいですか?

  8. 8

    execコマンドはxargsを受け入れず、コマンド入力でハングします

  9. 9

    xargsを使用してコマンドの途中で複数の引数を渡す

  10. 10

    最初のコマンドエラーでxargsを強制的に停止する

  11. 11

    xargsコマンドの-Iオプションの目的は何ですか?

  12. 12

    xargsコマンドが「LINE_MAX」アサーションで失敗する

  13. 13

    マルチコマンドで使用するための入力変数を含むxargsループ

  14. 14

    xargsコマンドは、bashエイリアスで使用するとサイレントに失敗します

  15. 15

    xargsを使用して何千ものコマンドを並列に実行する方法は?

  16. 16

    このxargsコマンドが機能しないのはなぜですか?

  17. 17

    このコマンドをAmazonAWSで実行することは可能ですか?xargs -n 1 curl -O <files.txt

  18. 18

    Xargs:3つの別々のxargsコマンドを並行して実行する

  19. 19

    DockerビルドでCOPYコマンドを使用する方法は?

  20. 20

    `find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

  21. 21

    セレンideでIfコマンドを使用する方法は?

  22. 22

    コマンドラインで-aを使用する方法は?

  23. 23

    コマンドラインでprintfを使用する方法は?

  24. 24

    ユーザー入力を必要とするコマンドでxargsを使用するにはどうすればよいですか?

  25. 25

    xargsを使用して、一致するたびにコマンド置換で関数を実行するにはどうすればよいですか?

  26. 26

    Gradleでcmdコマンドを使用する方法は?

  27. 27

    アイテムでAnsibleコマンドを使用する方法は?

  28. 28

    CURLでbase64コマンドを使用する方法は?

  29. 29

    Ansibleでコマンドstdinを使用する方法は?

ホットタグ

アーカイブ