次のフォルダ構造があります。
|_folder1
| |_folder1.1
| | |_folder1.1.1
| | |_img00
| | |_...
| |_folder1.2
| |_img00
| |_...
|_folder2
|_img00
|_...
画像をPDFに結合するスクリプトをリーフディレクトリで実行したいと思います。
ベストアンサー1
- ワイルドカードパターンファイルの場合すべてのサブディレクトリを再帰的に検索:
**/*
- ディレクトリのみを選択するには、次を追加します。グローバル予選
/
:**/*(/)
glob_dots
このオプションが設定されていない場合にドットで始まるD
一致を含めるには、glob修飾子を追加します。N
一致リストを空白のままにするには、glob修飾子を追加してください。**/*(/DN)
これでサブディレクトリのリストがあるので、リーフディレクトリのみをインポートするには、各ディレクトリにサブディレクトリがないことを確認し、空であることを*(/DN)
確認します。Y1
最初の一致の後に一致する一致が一覧表示されないようにするには、glob修飾子を追加できます。
for d in **/*(/DN); do
sub=($d/*(/DNY1))
if (($#sub)); then continue; fi
process_leaf_directory $d
done
ほとんどのファイルシステムにはより簡単な方法があります。つまり、リーフディレクトリのリンク数は2です(.
親ディレクトリとそのエントリのエントリのみを含み、リーフ以外のディレクトリには子..
ディレクトリのエントリも含まれます)。これにより、フィルタリングがより簡単になります。 glob修飾子を使用してリンク数が2であることを確認してくださいl
。
for d in **/*(/DNl2); do
process_leaf_directory $d
done