2

Можно ли задать переменную часть выходного имени файла определенной длины и заполнить лишние пробелы нулями.

Я хочу, чтобы вещи были заказаны для других пользователей, поэтому я хотел бы

curl http://example.com/[1-12]/file_name[1-50].kmz -o file_name-#1-#2.kmz' 

выглядеть как

имя_файла-01-01.kmz или имя_файла-12-50.kmz

скорее, чем

имя_файла-1-1.kmz и имя_файла-12-50.kmz

2 ответа2

2

Просто добавьте формат с ведущими нулями. Так что для вашего примера сделайте:

curl http://example.com/[01-12]/file_name[01-50].kmz -o file_name-#1-#2.kmz' 
0

Есть много способов. Вы можете использовать расширение Bash Brace для создания имен файлов с добавлением нуля, но вскоре оно станет сложным. Проще переименовать пакет после того, как вы скачали файлы, используя, например, скрипт prename , который доступен по крайней мере в дистрибутивах на основе Debian после установки Perl.

Эта команда prename выполнит заполнение нулями до трех цифр (измените {3} на другое число, чтобы изменить заполнение нулями. Убедитесь, что после второй косой черты в первом выражении есть нули> {n-1}):

$ ls
file_name-1-1.kmz  file_name-12-112.kmz  file_name-12-50.kmz  file_name-140-88.kmz
$ prename -v 's/([0-9]+)/00$1/g; s/0+([0-9]{3})/$1/g' *
file_name-1-1.kmz renamed as file_name-001-001.kmz
file_name-12-112.kmz renamed as file_name-012-112.kmz
file_name-12-50.kmz renamed as file_name-012-050.kmz
file_name-140-88.kmz renamed as file_name-140-088.kmz

Запустите как prename -n в первый раз, чтобы иметь возможность визуально проверять переименования без каких-либо изменений. Проверьте имя man prename .

Выражение переименования работает, сначала заполняя все числа n-1 нулями, затем удаляя столько нулей, сколько необходимо, чтобы во всех числах оставалось n цифр. Это не будет усекать информацию, что приятно.

Числа с плавающей запятой не обрабатываются выше (например, file_name-12.7-112.97.kmz), но могут быть легко сделаны с

s/([^\.0-9])([0-9]+)/${1}00$2/g; s/0+([0-9]{3})/$1/g

но эта более общая версия также более непонятна :-) (и может иметь свою долю ошибок; если поплавки не нужны, используйте более раннюю версию).

(prename на самом деле связано как rename в большинстве систем.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .