curl line curl - ім'я файлу example.com/ evidence1-10-цi.txt => 01.txt до 10.txt


2

Чи можливо встановити змінну частину виводу імені файлу на конкретну довжину та заповнити зайві пробіли нулями.

Я хочу, щоб речі були замовлені для інших користувачів, тому я хотів би

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

виглядати

file_name-01-01.kmz або file_name-12-50.kmz

а не

file_name-1-1.kmz та file_name-12-50.kmz

Відповіді:


2

Просто наклейте формат за допомогою провідних нулів. Тож для вашого прикладу робіть:

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

1
Як це прийнята відповідь? Засипання нулями отримає неправильну URL-адресу. Також у цій рядку відсутня цитата.
Маркус Амальтея Магнусон

0

Існує багато способів. Ви можете використовувати розширення підтяжки Bash розумним способом для створення нульових імен файлів, але це скоро стане складним. Простішим є пакетне перейменування після завантаження файлів, використовуючи, наприклад, 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

але ця більш загальна версія також є більш нерозбірливою :-) (і може мати свою частку помилок; якщо floats не потрібні, використовуйте більш ранню версію).

( prenameнасправді пов'язано, як renameу більшості систем.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.