1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

find -exec や xargs で引数の展開個数を制御する

Last updated at Posted at 2021-11-27

ファイルが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 は便利だね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?