Inverta os resultados para “for in * do” -loops [duplicate]

4

Existe uma maneira fácil de inverter um loop? Para um script, quero processar os arquivos na ordem inversa.

Então, em vez de:

for file in *.jpg;
  do echo $file;
done

com o resultado

001.jpg
002.jpg
003.jpg
...
150.jpg

Eu quero o resultado

150.jpg
149.jpg
148.jpg
...
001.jpg
    
por k0pernikus 06.02.2012 / 13:55

2 respostas

9

Você pode usar

array=(*.jpg)
for ((i = ${#array[@]} - 1;i >= 0;i--)); do
    echo ${array[i]}
done
    
por 06.02.2012 / 14:02
2

No exemplo dado, você poderia usar

for num in 'seq -w 150 -1 1'
  do echo $num.jpg
done
Obviamente, isso não é totalmente equivalente, pois não inverte realmente o globbing, mas gera a sequência externamente.

    
por 06.02.2012 / 14:00