Bashスクリプトに次のものがあるとしましょう。
# Count the number of wood.dat files
numWoodFiles=($( find ./$1_* -type d -exec find {} -type f -name "wood\.dat" \+ | wc -l ))
実行すると、次のエラーが発生します。
find: missing argument to `-exec'
+
コマンドを順番に実行するのではなく、コマンドがより速く実行され、同時に実行されるように演算子を使用したいと思います;
。
答え1
を使用するときfind ... -exec ... {} +
、{}
〜しなければならないパス名がコマンドの最後に追加される+
ため、前の最後です。find
エラーは、;
最初の末尾のエントリが欠落しているために発生しますfind
。
すべてのサブディレクトリを最初に見つけてから、そのサブディレクトリに対して別の検索を実行することには利点がないので、コマンドを次のいずれfind
かに置き換えることができますfind
。
find "./$1_"* -type f -name 'wood.dat'
wood.dat
これは、一致するすべてのディレクトリで呼び出されたファイルを探します"./$1_"*
。
全体的な課題は次のとおりです。
numWoodFiles=$( find "./$1_"* -type f -name 'wood.dat' | wc -l )
(...)
単一の整数の配列を作成する必要がないため、外部を削除しました。