Um equivalente POSIX da @ solução do TomHunt .
find . -type d -links 2 -exec sh -c '
find "$@" -type f -name "*.jpg"' sh {} +
O -links 2
confia na propriedade de alguns sistemas de arquivos de que a contagem de links de diretórios (inicialmente 2 para a entrada em seu pai e a entrada .
em si) aumenta em um para cada subdir (por causa do ..
entrada neles). Alguns sistemas de arquivos modernos, como btrfs
ou nilfs
, cujas estruturas são radicalmente diferentes, não possuem essa propriedade.
Com zsh
, você pode fazer algo como:
has_subdirs() {
local l
l=($REPLY/*(/DNoN[1]))
(($#l))
}
dirs_without_subdirs=(**/*(DN^+has_subdirs))
jpgs=($^dirs_without_subdirs/*.jpg(ND.))
(($#jpgs)) && printf '%s\n' $jpgs