find -print0 |内のコマンド実行 xargs -0 sh -c

ジェリー

私はfind . -type f -print0 | xargs -0 sh -cこのような一連のコマンドを実行するために使用していました

find . -type f \
exec grep -q `filter` \
-print0 | xargs -0 sh -c '
sed -i.bak s/this/that/g ${0}
git diff --no-index /path/to/${0}.bak /path/to/${0} >> my.patch
rm ${0}.bak
'

これは、検索と置換、バックアップ、パッチ適用、バックアップの削除のように見えますが、パッチファイルを見ると、ほとんどの変更がないため、別の方法を試しました

find . -type f \
exec grep -q `filter` \
-print0 | xargs -0 sed -i.bak s/this/that/g {} \;

その後、すべての.bakファイルをバックアップフォルダーに移動します。今回は、多くのファイルが変更されており、バックアップフォルダーとソースフォルダーに基づいて生成されたパッチファイルの方がはるかに大きいことがわかります。

私は2番目のアプローチで大丈夫です、私は最初のアプローチでどこが間違っていたか知りたいだけです、なぜすべてのコマンドが内部で実行されなかったのsh -cですか?ありがとう!

ムル

xargsできるだけ多くの引数を使用してコマンドを実行しようとしますが、使用しているのはそのうちの1つだけです。次のようなものは、すべての引数を処理します。

xargs -0 sh -c '
for i
do
sed -i.bak s/this/that/g "$i"
git diff --no-index /path/to/"$i".bak /path/to/"$i" >> my.patch
rm "$i".bak
done
' _ 

for i(またはfor i in "$@")は(を除く$0すべての引数をループするので、代わりに_beのようなものを$0使用$0して、まったく使用ない方が簡単です。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

find -print0 |内のコマンド実行 xargs -0 sh -c

分類Dev

find -print0 内のコマンド実行 | xargs -0 sh -c

分類Dev

GNU find "or"関数が-print0で機能していません| xargs -0 tar

分類Dev

"find .-iname" * .jpg "-type f -print0 | xargs -0 rm *"がすべてのファイルを削除したのはなぜですか?

分類Dev

GNU find の -print0 に代わる POSIX

分類Dev

オプション-print0で使用されるfindコマンドの出力を制限する方法

分類Dev

gnu findを使用すると、-print0と-printf "%p \ 0"の違いは何ですか。

分類Dev

shの「$ {0%/ *}」と「$ {0 ## * /}」

分類Dev

次のコマンドでの-print0の意味は何ですか

分類Dev

「find.-print0 | xargs -r0du-chx」と「du-chx」の結果が異なるのはなぜですか。

分類Dev

xargs -r0 vs xargs -0

分類Dev

-print0から最後のn文字を削除しますか?

分類Dev

xargs sh-c最初の引数をスキップする

分類Dev

find -print0をgrepしようとすると、奇妙な動作が発生します

分類Dev

Remove last n characters from -print0?

分類Dev

「find ... -exec sh -c '...' sh {} +」を使用したこのfindコマンドはどのように機能しますか?

分類Dev

検索時にprint0オプションを使用すると出力が少なくなりますか?

分類Dev

検索時にprint0オプションを使用すると出力が少なくなりますか?

分類Dev

find、xargs:各ファイルのコマンドチェーンを実行します

分類Dev

findが空の場合は、次のコマンドを実行しないでください(xargs --no-run-if-empty)

分類Dev

sh:0:無効なオプション-

分類Dev

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

分類Dev

find、xargs、egrepの問題

分類Dev

2つのfindコマンドからのxargs出力の説明

分類Dev

xargs -0は新しい行を生成します

分類Dev

-findコマンドでのexecからxargsへの変換

分類Dev

戻り値= 0になるまでShループコマンド

分類Dev

によって返される、ヌル文字で区切られたファイルをカウントする方法。見つける。-type f -print0?

分類Dev

'sh -c'を使用すると、bashdiffは0を返します

Related 関連記事

  1. 1

    find -print0 |内のコマンド実行 xargs -0 sh -c

  2. 2

    find -print0 内のコマンド実行 | xargs -0 sh -c

  3. 3

    GNU find "or"関数が-print0で機能していません| xargs -0 tar

  4. 4

    "find .-iname" * .jpg "-type f -print0 | xargs -0 rm *"がすべてのファイルを削除したのはなぜですか?

  5. 5

    GNU find の -print0 に代わる POSIX

  6. 6

    オプション-print0で使用されるfindコマンドの出力を制限する方法

  7. 7

    gnu findを使用すると、-print0と-printf "%p \ 0"の違いは何ですか。

  8. 8

    shの「$ {0%/ *}」と「$ {0 ## * /}」

  9. 9

    次のコマンドでの-print0の意味は何ですか

  10. 10

    「find.-print0 | xargs -r0du-chx」と「du-chx」の結果が異なるのはなぜですか。

  11. 11

    xargs -r0 vs xargs -0

  12. 12

    -print0から最後のn文字を削除しますか?

  13. 13

    xargs sh-c最初の引数をスキップする

  14. 14

    find -print0をgrepしようとすると、奇妙な動作が発生します

  15. 15

    Remove last n characters from -print0?

  16. 16

    「find ... -exec sh -c '...' sh {} +」を使用したこのfindコマンドはどのように機能しますか?

  17. 17

    検索時にprint0オプションを使用すると出力が少なくなりますか?

  18. 18

    検索時にprint0オプションを使用すると出力が少なくなりますか?

  19. 19

    find、xargs:各ファイルのコマンドチェーンを実行します

  20. 20

    findが空の場合は、次のコマンドを実行しないでください(xargs --no-run-if-empty)

  21. 21

    sh:0:無効なオプション-

  22. 22

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

  23. 23

    find、xargs、egrepの問題

  24. 24

    2つのfindコマンドからのxargs出力の説明

  25. 25

    xargs -0は新しい行を生成します

  26. 26

    -findコマンドでのexecからxargsへの変換

  27. 27

    戻り値= 0になるまでShループコマンド

  28. 28

    によって返される、ヌル文字で区切られたファイルをカウントする方法。見つける。-type f -print0?

  29. 29

    'sh -c'を使用すると、bashdiffは0を返します

ホットタグ

アーカイブ