zsh - リーフディレクトリでスクリプトを実行するには?

zsh - リーフディレクトリでスクリプトを実行するには?

次のフォルダ構造があります。

|_folder1
| |_folder1.1
| | |_folder1.1.1
| |   |_img00
| |   |_...
| |_folder1.2
|   |_img00
|   |_...
|_folder2
  |_img00
  |_...

画像をPDFに結合するスクリプトをリーフディレクトリで実行したいと思います。

ベストアンサー1

これでサブディレクトリのリストがあるので、リーフディレクトリのみをインポートするには、各ディレクトリにサブディレクトリがないことを確認し、空であることを*(/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

おすすめ記事