Переименуйте сотни файлов

Я использую Elementary OS (все еще очень новый для любой UNIX-системы) и имею сотни текстовых файлов на моем старом жестком диске, который мне нужно сортировать. Все текстовые файлы имеют такое имя, как;

lua – eng1-6TH4eI8gtf3.txt

  • Переименуйте много файлов со всеми типами символов, с POSIX-переносимостью
  • Для каждой подпапки сортируйте файлы по имени и переименовывайте их в последовательные заполненные номера (независимо от расширения)
  • как mv-файлы с определенным шаблоном в файлы с определенным шаблоном
  • Почему эта команда Bash использует regex, не заменяя мои скобки?
  • Объединение папок с одним и тем же именем, но с другим корпусом
  • Удалите определенное расширение из всех файлов в каталоге
  • Мне нужна команда, которая может удалить последние 11 символов из всех них, но все равно оставляя расширение. Оглядевшись, я увидел команду «переименовать», но я не уверен, что это сработает для меня.

    Команда, которую я мог бы просто скопировать, вставить, а затем изменить что-нибудь вроде каталога, будет потрясающим, и объяснение того, что все делает.

  • переименование mp3-файлов, начинающихся с "-"
  • Добавить или вычесть число из имен всех файлов в каталоге
  • Сценарий для перемещения одного типа файлов и создания подпапки, если он существует?
  • как я могу переименовать несколько файлов, удалив символ или строку?
  • mv не удалось на полпути - исходный каталог неповрежден
  • Измените имя файла, содержащего пробелы в имени
  • One Solution collect form web for “Переименуйте сотни файлов”

    Эта команда должна хорошо работать для вас, когда я тестировал ее на некоторых образцовых файлах с тем же шаблоном, что и ваш:

     rename 's/(.*)(-.{11})\.txt$/$1\.txt/' * 

    Объяснение:

    См. Эту простую команду:

     rename 's/pattern/result/' filename(s) 

    Шаблон может быть регулярным выражением. Таким образом, мы можем взять другую часть текста (это имя файла). Если вы этого не понимаете, google для regex. Это выглядит сложным, но если вы его узнаете, это легко.

    В результате я беру содержимое первой круглой скобки на $1 и оставляю вторую скобку и в конце добавляю к ней .txt .

    Импортное уведомление
    Сначала запустите команду с параметром -n -v чтобы просто посмотреть, что будет делать команда. Если результат – это то, что вы хотите, запустите его без параметров. Поэтому сначала запустите его так:

     $ rename -n -v 's/(.*)(-.{11})\.txt$/$1\.txt/' * rename(lua - eng1-6TH4eI8gtf3.txt, lua - eng1.txt) rename(lua - eng2-6TH4eI8gtf4.txt, lua - eng2.txt) rename(lua - eng4-6TH4eI8gtf5.txt, lua - eng4.txt) 
    Linux и Unix - лучшая ОС в мире.