Como posso me referir a todos os arquivos que são nomeados usando dois números?

2

Eu quero fazer um script de shell que faça o download de todos os arquivos da área nomeada [0-9] [0-9] .png;

por exemplo: 00.png 01.png 33.png 91.png etc

files = ???????

for file in files
do

curl ftp://server/${file}

done

O que devo colocar em arquivos = ???

    
por Adrian George 12.01.2015 / 22:30

3 respostas

4

Eu ficaria muito surpreso se o protocolo ftp://server/file permitisse curingas. Eu suspeito que você tenha que buscar uma lista dos arquivos disponíveis e iterar os que têm 2 dígitos.

No entanto, se você quiser gerar os números de 00 a 99 no bash:

for file in {0..9}{0..9}.png; do ...
    
por glenn jackman 12.01.2015 / 22:47
2

Use a expansão de nome de arquivo do Bash (usando * , ? e [] ):

$ ls
00.png  03.png  06.png  09.png  12.png  15.png  18.png  21.png
01.png  04.png  07.png  10.png  13.png  16.png  19.png
02.png  05.png  08.png  11.png  14.png  17.png  20.png
$ files=([0-9][0-9].png)
$ echo "${files[@]}"
00.png 01.png 02.png 03.png 04.png 05.png 06.png 07.png 08.png 09.png 10.png 11.
png 12.png 13.png 14.png 15.png 16.png 17.png 18.png 19.png 20.png 21.png

Isso, diferentemente do {0..9}{0..9}.png , só se expande para nomes de arquivos existentes. Então você poderia fazer:

files=([0-9][0-9].png)   # creates an array

for FILE in "${files[@]}"
do
    curl "ftp://server/${FILE}"
done

Ou diretamente:

for FILE in [0-9][0-9].png    
do
    curl "ftp://server/${FILE}"
done
    
por muru 13.01.2015 / 16:31
1

seq imprime uma sequência de números. -w equaliza a largura preenchendo com zeros à esquerda.

files='seq -w 0 99'

for file in $files
do

curl ftp://server/${file}.png

done
    
por Eric Carvalho 13.01.2015 / 15:18