find:ファイルが指定されていない場合は何もしません。

find:ファイルが指定されていない場合は何もしません。

find特定のファイル名に対してuseを呼び出したいと思います。

find $(do_something to find filenames) -print0 | xargs -r0 ls -ld

何も返されないと中断されます$(do_something to find filenames)。 find コマンドは再帰検索を開始します。

引数として明示的なファイル名/ディレクトリ名なしでfindに何もしないように指示する方法はありますか?

ベストアンサー1

それでzsh私はそうします:

files=($(do_something to find filenames))
(($#files)) && find $files ...

そしてtcsh

set files=(`do_something to find filenames`)
if ($#files) find $files:q ...

bash、またはmkshksh93

set -f; files=($(do_something to find filenames))
((${#files[@]})) && find "${files[@]}" ...

POSIX的に:

set -f; set -- $(do_something to find filenames)
[ "$#" -gt 0 ] && find "$@" ...

(Bashや他のPOSIXシェルでは$(...)分割($IFSデフォルトでは空白、タブ、および改行)を実行しますが、結果の単語にはワイルドカードも実行します。ここでは必要ではないと予想されるため)set -f。 rc、es...)にはこの問題はありません)。

おすすめ記事