Как я могу обратиться ко всем файлам, которые называют с помощью двух чисел?

Я хочу сделать сценарий оболочки, который загружает все файлы что область, названная [0-9] [0-9] .png;

например: 00.png 01.png 33.png 91.png и т.д.

files = ???????

for file in files
do

curl ftp://server/${file}

done

Что я должен поместить в файлы =???

2
задан 12 January 2015 в 14:30

3 ответа

Я был бы высоко удивлен, разрешает ли ftp://server/file протокол подстановочные знаки. Я подозреваю, что необходимо будет выбрать список доступных файлов и выполнить итерации по тем с 2 цифрами.

Однако, если Вы хотите к , генерируют числа 00 к 99 в ударе:

for file in {0..9}{0..9}.png; do ...
4
ответ дан 19 November 2019 в 00:52

Используйте Bash расширение имени файла (использование *, ? и []):

$ 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

Это, в отличие от этого {0..9}{0..9}.png, только расширяется до существующих имен файлов. Таким образом, Вы могли сделать:

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

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

Или, непосредственно:

for FILE in [0-9][0-9].png    
do
    curl "ftp://server/${FILE}"
done
2
ответ дан 19 November 2019 в 00:52

seq печать последовательность чисел. -w компенсирует ширину путем дополнения продвижением, обнуляет.

files=`seq -w 0 99`

for file in $files
do

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

done
1
ответ дан 19 November 2019 в 00:52

Другие вопросы по тегам:

Похожие вопросы: