Как эффективно переименовать тысячи файлов?

У меня на компьютере Fedora множество музыкальных файлов (буквально тысячи файлов), которые я бы хотел переименовать с помощью двух правил:

  1. Каждое место должно быть заменено символом _ (подчеркивание) и
  2. Каждая буква в верхнем регистре должна быть заменена его нижней строкой.

Так, например, имя файла песни Under A Glass Moon, которое является шестой дорожкой на альбоме, на моем компьютере называется 06 Under A Glass Moon.mp3 и я хотел бы, чтобы его назвали 06_under_a_glass_moon.mp3 .

Мой вопрос: возможно ли сделать это для каждой песни / файла в моей коллекции, не делая этого вручную.

Примечание. Чтобы уточнить, мне не нужно редактировать метаданные песен; Я делаю это с помощью EasyTAG. Все, что мне нужно сделать, это изменить имена файлов песни.


Обновление: я знаю, что этот вопрос имеет некоторое время, и некоторые люди уже ответили, но я нашел более простое решение с помощью EasyTAG. Способ сделать это:

 View --> Scanner Mode --> Process Fields. 

Там вы можете заменить какой-то символ для других (не ограничиваясь заменой «" на «_»), вы можете выбрать строчный или прописный шрифт по желанию и многое другое. Кроме того, вы можете решить, в каких областях вы хотите внести изменения. Очень полезная функция.

Кроме того, спасибо тем, кто ответил. Ваша помощь была очень полезной.

2 Solutions collect form web for “Как эффективно переименовать тысячи файлов?”

Вы можете установить rename скрипта Perl . Затем попробуйте сделать следующее:

 $ rename -n 's/[AZ]/lc($&)/ge; s/\s/_/g' files* 

(удалите ключ -n когда ваши тесты в порядке)


Есть две утилиты, называемые rename . Тот, который в Fedora не может этого сделать. В некоторых других дистрибутивах по умолчанию используется Perl. Если вы запустите следующую команду ( GNU )

 $ file "$(readlink -f "$(type -p rename)")" 

и у вас есть результат вроде

 .../rename: Perl script, ASCII text executable 

и не содержит:

 ELF 

то это кажется правильным инструментом =)

Если нет, например, в Fedora, установите его вручную .

И последнее, но не менее важное: этот инструмент был первоначально написан Ларри Уолл, отцом Перла.

Используя ту же команду rename что и @sputnick, в сочетании с find :

 find /path/to/collection -type f -execdir rename -n '$_ = lc;y/ /-/' {} + 
  • $_ = lc преобразует ввод в нижний регистр. y/ /-/ изменяет пробелы на - (аналогично tr ).
  • -execdir запускает команду в каталоге файла, так что {} заменяется на ./name-of-file . Поэтому каталоги должны оставаться незатронутыми.
  • На лету сжатие читаемой и записываемой папки (например, Windows EFS)?
  • команда linux застряла
  • Суммарно байт файлов
  • Как предоставить глобальный доступ к файлу в частной папке?
  • Измените одну часть имени более 1000 файлов
  • Как переименовать файлы и каталог с *. ~ 1 ~ суффикс в исходное имя?
  • Как написать содержимое файла в новый файл, удалив повторяющиеся строки
  • Список отсутствующих имен файлов в шаблоне
  • Включение даты в имя файла
  • Как программа журнала может продолжить работу с удаленным файлом?
  • Найти последние версии нескольких файлов в нескольких каталогах
  • Сценарий оболочки: как я могу писать многострочный контент в файл, если файл не существует?
  • Linux и Unix - лучшая ОС в мире.