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

У меня на компьютере 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. 

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

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

  • Слияние файлов - одно и то же имя, другое расширение
  • Преобразование идентичных файлов в hardlinks
  • Как мне выполнить ls, а затем отсортировать результаты по дате?
  • `command. *` действует в родительском каталоге
  • хранить N файлов в подкаталогах
  • Как сделать временный файл в ОЗУ?
  • Как я могу перечислить файлы, из которых нет символических ссылок?
  • Почему cat x >> x loop?
  • 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 . Поэтому каталоги должны оставаться незатронутыми.
    Linux и Unix - лучшая ОС в мире.