Переименуйте файлы 000 ... 001 ... 002 ... в 001 ... 002 ... 003

593
mt025

Я хотел скачать файл 50 ГБ из интернет-архива. Он загружал до 300 Кбит / с, и это займет несколько дней. Поэтому я написал скрипт для загрузки файлов по частям и загрузки на Google Drive без кэширования и заполнения моего сервера объемом 20 ГБ. Теперь у меня есть файлы .000для .082.

Я хотел бы открыть это в 7z, но я был немного неосторожен и начал с 000того 001, что вместо этого, я бы предпочел не объединять их в первую очередь, так как бы я переименовал эти файлы, увеличивая их на 1, чтобы я получал exts файлов, например 001, 002, 003?

Я попытался открыть их в 7z, но он читает только файл .000.

У меня есть доступ к Windows и Linux, я пробовал Bulk File Renamer Utility, для Windows, но, похоже, не нравится увеличивать расширения файлов с помощью его, Numbering (10)есть ли способ сделать это в Bulk File Renamer Utility, или иначе, как бы я получил об использовании командной строки Linux для переименования их всех?

-2
@DavidPostill Я уверен, что это можно сделать с помощью какой-нибудь однострочной команды linux. Я вряд ли называю это сценарием. mt025 5 лет назад 0
@ mt025 «Я уверен, что это можно сделать с помощью какой-нибудь однострочной команды linux. Я вряд ли называю это сценарием ». Несмотря на мои попытки избежать написания сценариев для людей, [здесь есть« 1-строчная команда linux »] (https://superuser.com/a/1352750/167207), которая является не командой, а 1 строчный скрипт. Я надеюсь, что это решает проблемы, но вы просите людей написать код для вас. Нет другого способа «ответить» на этот вопрос, но я сделал это по доброй воле [основываясь на ваших комментариях к мета здесь] (https://meta.superuser.com/q/13280/167207). Хотя вам кажется, что это сообщество грубое, вы слишком упрощаете решение этого вопроса. JakeGould 5 лет назад 0
Спасибо @JakeGould, я ценю это и взял ваши комментарии из мета на борту. mt025 5 лет назад 2

1 ответ на вопрос

2
JakeGould

Этот однострочник должен работать. Протестировано на macOS High Sierra (10.13.6).

Он работает, используя ls -rсписок файлов в обратном порядке, а затем - с помощью математики - просто добавляя +1к каждому расширению файла.

Сценарий предполагает, что у вас есть файлы с именами с таким шаблоном, как этот:

test.000 test.001 test.002 test.003 

И переименует их следующим образом:

test.001 test.002 test.003 test.004 

Вот «пробная версия», которая просто повторяет команду для вашего обзора:

ls -r | while read f; do echo mv "$" "$.$(printf '%03d' $(expr $ + 1))"; done 

И просто удалите это, echoчтобы заставить его работать и делать это так:

ls -r | while read f; do mv "$" "$.$(printf '%03d' $(expr $ + 1))"; done 
@KamilMaciorowski Спасибо за улов! Просто адаптировали другой скрипт нумерации для использования здесь, но вы правы; `n` здесь не нужен. Только отредактировано, чтобы отразить это. Работает отлично! JakeGould 5 лет назад 0
Вообще разбор `ls` не рекомендуется. Я уверен, что вы это знаете, хотя менее опытные пользователи могут запутаться. Итак, скажем прямо: [не нужно анализировать вывод `ls`] (https://mywiki.wooledge.org/ParsingLs); но весь ответ адаптирован к именам файлов по строгому шаблону, что делает синтаксический анализ `ls` довольно безопасным, поэтому это разумное исключение. Кроме того, этот «пробный запуск» повышает безопасность. Upvoted. Kamil Maciorowski 5 лет назад 2

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