-execdirの検索方法+仕事?

-execdirの検索方法+仕事?

私が理解したところ、一致する各ファイルに対して指定されたテストがfind -tests -execdir <command> '{}' ';'実行されます。commandこのコマンドは、-execdir一致するファイルと同じ親ディレクトリで(一致する各ファイルに対して)実行され、{}一致するファイルのデフォルト名を表します。

+今、質問は、複数のファイルを同時に処理する代わりにを使用する場合、どのように達成されますか';'?を使用すると、find -tests -execdir <command> '{}' +すべてのファイルが指定されたコマンドの引数として提供されます(最大引数を超えないように)。<command>どのように同時にすべての項目に対してfindを実行できますか?

ベストアンサー1

find次のファイルが見つかったとしましょう。

./foo/bar
./foo/baz
./foo/quux

を使用する場合、-execdir [...]+有効な結果コマンドは次のとおりです。

( cd ./foo; command bar baz quux )

以下を使用すると、その逆が(効果的に)なります-execdir [...] \;

( cd ./foo; command bar )
( cd ./foo; command baz )
( cd ./foo; command quux )

-execnot も同様ですexecdirが、作業ディレクトリを変更する代わりにパスを指定します。を使用する場合、-exec [...]+有効な結果コマンドは次のとおりです。

command ./foo/bar ./foo/baz ./foo/quux

以下を使用すると、その逆が(効果的に)なります-exec [...] \;

command ./foo/bar
command ./foo/baz
command ./foo/quux

両方のディレクトリにあるファイルがどのように機能するかを見てみましょう。

$ tree
.
├── bar
│   ├── bletch
│   └── freeble
└── foo
    ├── bar
    ├── baz
    └── quux
$ find . -type f -exec echo {} \;
./foo/baz
./foo/quux
./foo/bar
./bar/bletch
./bar/freeble
$ find . -type f -execdir echo {} \;
./baz
./quux
./bar
./bletch
./freeble
$ find . -type f -exec echo {} +
./foo/baz ./foo/quux ./foo/bar ./bar/bletch ./bar/freeble
$ find . -type f -execdir echo {} +
./baz ./quux ./bar
./bletch ./freeble

おすすめ記事