find -exec や xargs で引数の展開個数を制御する
ファイルが3つある状態。
ls
a.txt b.txt c.txt
1-1. find ... -exec ... \;
引数は1つずつコマンドに渡される。次の例だと echo が3回実行される。
find . -name '*.txt' -exec echo {} \;
./c.txt
./b.txt
./a.txt
1-2. find ... -exec ... +
引数はまとめてコマンドに渡される。次の例だと echo は1回だけ実行される。
find . -name '*.txt' -exec echo {} +
./c.txt ./b.txt ./a.txt
2-1. xargs
引数はまとめてコマンドに渡される。次の例だと echo は1回だけ実行される。
find . -name '*.txt' | xargs echo
./c.txt ./b.txt ./a.txt
2-2. xargs -n 1
引数は1つずつコマンドに渡される。次の例だと echo が3回実行される。
find . -name '*.txt' | xargs -n 1 echo
./c.txt
./b.txt
./a.txt
-n
に指定する数によっていくつずつ渡すかコントロールできる。次の例は2つずつ。
find . -name '*.txt' | xargs -n 2 echo
./c.txt ./b.txt
./a.txt
ローカル(MacOS)の man を読んだら -n
のデフォルト値は 5000 。
xargs -n
は便利だね。
Author And Source
この問題について(find -exec や xargs で引数の展開個数を制御する), 我々は、より多くの情報をここで見つけました https://qiita.com/hatappo/items/27eccddeda3bb22041ef著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .