UnixのForループ:サブディレクトリにファイルを含める

UnixのForループ:サブディレクトリにファイルを含める

Unixの単純なforループは次のとおりです。

for FILE in $BASE_WORK_DIR/*.pdf
   do
     echo $FILE
   done

.pdfこれにより、BASE_WORK_DIRディレクトリ内のすべてのファイルがエコーされます。

BASE_WORK_DIRPDFファイルも含むサブディレクトリがある場合はどうなりますか?

この場合、どのPDFファイルBASE_WORK_DIRとそのサブディレクトリをインポートするようにforループをどのように設計できますかBASE_WORK_DIR

ベストアンサー1

標準的で標準的で信頼できる構文は次のとおりです。

find . -type f -name '*.pdf' -exec sh -c '
  for f do
    something with "$f"
  done' sh {} +

sh(ファイルリストが大きい場合は、複数の呼び出しを実行できます。)

の場合はzsh次のようになります。

for f (./**/*(.NDoN)) {
  something with "$f"
}

(隠しファイルを含む.場合は、-type fリストを並べ替えるのではなく、一致するファイルがなくても文句を言わないでください。)しかし、アクセスできないディレクトリに関するエラーメッセージは表示されません。DoNN

おすすめ記事