Use zsh em vez de bash , onde você pode definir a classificação (por nome por padrão):
files=(/my/directory/**/*.jpg(.NDms+2ms-15))
Isso também evitará problemas com nomes de arquivo contendo caracteres de nova linha ( bash-4.4 ' mapfile suporta -d '' , que pode ser usado com find -print0 ).
Para classificar ( o rder) pelo m tempo de odificação:
files=(/my/directory/**/*.jpg(.NDms+2ms-15om))
Para obter um pedido similar (por nome) com o GNU find e o GNU sort :
find /my/directory -name '*.jpg' \
-type f \
-newermt '-15 seconds' \
! -newermt '-2 seconds' \
-print0 |
sort -zt/ -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 -k6,6 -k7,7 -k8,8 \
-k9,9 -k10,10 -k11,11 -k12,12 -k13,13 -k14,14
Por ordem do tempo de modificação:
find /my/directory -name '*.jpg' \
-type f \
-newermt '-15 seconds' \
! -newermt '-2 seconds' \
-printf '%T@:%pfiles=(/my/directory/**/*.jpg(.NDms+2ms-15))
' |
sort -zn |
sed -z 's/[^:]*://#'
Adicione | tr ' para armazenar em uma variável bash escalar (não matriz) ou use com readarray' '\n'mapfile / -d '' sem readarray -d '' array < <(find...) (dividir em nova linha, caso em que você pode assim como a coisa toda em registros delimitados por nova linha em vez de registros delimitados por NUL).
Ou use zsh com bash 4.4 ou superior ou em array=(${(0)"$(find...)"}) , use %code% .