Многократное расширение файла Переименование с помощью одной команды
Я получил несколько важных файлов по почте. Есть около 150 таких файлов. Расширения файлов называются zip1,zip2,zip3, zip_ и т. Д. Я просто хочу изменить расширение этих файлов обратно на zip, используя одну команду, чтобы избежать ручной задачи переименования каждого файла.
3 ответа
Пытаться:
rename 's/zip[^.]*$/zip/' /path/to/directory/containing/the/files/*
Пример:
$ ls
bar.zip2 egg.zip4 foo.zip1 spam.zip3 test.zip_
$ rename 's/zip[^.]*$/zip/' *
$ ls
bar.zip egg.zip foo.zip spam.zip test.zip
Эту задачу с несколькими переименованиями легко выполнить с помощью pyRenamer из стандартных репозиториев Ubuntu в Ubuntu 16.04 и более ранних версиях. Следующий скриншот объясняет, как это сделать:

Я знаю, что это не способ сделать это в терминале, как вы просили, но это альтернативный способ сделать это, который вам может оказаться проще, потому что вы можете просматривать файлы, которые будут переименованы, в окне pyRenamer вместо того, чтобы вводить путь.
В Ubuntu 18.04 и более поздних версиях pyRenamer был заменен на GPRename.
Использование mmv команда (установите его sudo apt-get install mmv):
mmv -n '*.zip*' '#1.zip'
Первый * соответствует всему до .zip, а второй * соответствует всему после .zip, и они становятся группой совпадений с обратной ссылкой #1 а также #2 соответственно. И мы оставляем только первый с .zip в конце.
Примечание: с использованием -n вариант, mmv Команда выполняется как сухая, поэтому удалите ее, чтобы выполнить фактическое переименование.
Или через комбинацию find а также mv команды:
find source/dir -type f -name '*.zip*' -exec sh -c 'echo mv "$0" "${0%.*}.zip"' {} \;
-
source/dirуказывает путь к исходному каталогу. -type fищет только файлы.-name '*.zip*'найдите те типы файлов, имена которых похожи на '*.zip*'{}представлять текущий файл.- Полный из
"${0%.*}.zip", расширение файла полосы и добавить.zipк имени файла. - Так
mv "$0" "${0%.*}.zip"переименовывает текущий файл в*.zip,
Примечание: удалить echo Команда после того, как вы убедитесь, что на пробежке.