com zsh
:
for d (subdir*(/)) mixb $d/*.(dat|d01)([1])
O bash
equivalente seria algo como:
shopt -s nullglob extglob
for d in subdir*/; do
[ -L "${d%/}" ] && continue
set -- "$d"*.@(dat|d01)
[ "$#" -eq 0 ] || mixb "$1"
done
Como você obtém o primeiro arquivo em cada subdiretório que corresponde a uma lista de extensões de arquivo? Meu objetivo é executar um programa em qualquer um dos arquivos em uma série de subdiretórios.
Por exemplo, abaixo há 3 subdiretórios. Eu quero executar o programa em subdir1 / file.dat, subdir2 / file.d01 e subdir3 / file1.dat, dado que eu quero encontrar arquivos que tenham extensão .dat ou .d01.
subdir1 - file.dat, file.d01
subdir2 - file.d01, file.d02, file.d03
subdir3 - file1.dat, file2.dat
O seguinte funcionou muito bem por algum tempo, até que comecei a encontrar diretórios como os dois últimos. subdir3 é problemático, já que todos os arquivos acabam sendo processados.
find . -name "*.dat" -exec mixb {} \;