for i in {1..3}; do
for j in {10..20}; do
(wget http://example.com/"$i-$j".jpg &)
done
done
Я даже проверял...
Вы можете использовать параметр -t команды ls для сортировки файлов по модификациям. В сочетании с командой tail вы можете распечатать все файлы, кроме первого. Примерно так:
ls -t | tail -n +2
В цикле это может выглядеть так:
for my_file in $(ls -t | tail -n +2); do upload $my_file; rm $my_file; done
Используя оболочку zsh
и предполагая, что ваша команда загрузки называется upload
и принимает все файлы в виде списка в своей командной строке:
upload./*(.Dom[2,-1])
Квалификатор glob (.Dom[2,-1]))
заставляет предшествующий шаблон подстановки(*
)соответствовать только обычным файлам (с использованием квалификатора .
glob и включая скрытые такие файлы с использованием квалификатора D
glob ), и расширение шаблона не будет содержать самый последний измененный файл(om
указывает оболочке сортировать файлы по метке времени модификации, и [2,-1]
выберет все, кроме первого в результирующем списке ).
Затем вы можете использовать тот же шаблон для удаления переданных файлов или использовать цикл:
for name in./*(.Dom[2,-1]); do
upload $name
rm -f $name
done
Это должно обрабатывать все типы имен файлов, включая имена файлов со встроенными пробелами, табуляцией или новой строкой.
# find the latest file
latestf="$(ls -t /directory/*|head -1)";
# loop over files now
for f in /directory/* ; do
if [[ "${f}" == "${latestf}" ]];then
echo "skipping file [${f}]";
else
echo "processing file [${f}]";
# your upload cmd here
fi
done