ファイル拡張子のリストに一致する各サブディレクトリの最初のファイルを取得するには?私の目標は、一連のサブディレクトリにある1つのファイルでのみプログラムを実行することです。
たとえば、以下には3つのサブディレクトリがあります。 .datまたは.d01拡張子を持つファイルを探したいので、subdir1 / file.dat、subdir2 / file.d01、およびsubdir3 / file1.datでプログラムを実行したいと思います。
subdir1 - file.dat, file.d01
subdir2 - file.d01, file.d02, file.d03
subdir3 - file1.dat, file2.dat
以下は、最後の2つのディレクトリと同じディレクトリの実行を開始するまでしばらくうまくいきました。 subdir3は最終的にすべてのファイルが処理されるので問題になります。
find . -name "*.dat" -exec mixb {} \;
答え1
そしてzsh
:
for d (subdir*(/)) mixb $d/*.(dat|d01)([1])
これに対応するbash
ものは次のとおりです。
shopt -s nullglob extglob
for d in subdir*/; do
[ -L "${d%/}" ] && continue
set -- "$d"*.@(dat|d01)
[ "$#" -eq 0 ] || mixb "$1"
done