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

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

lua – eng1-6TH4eI8gtf3.txt

  • Пакетное переименование "case duplicates"
  • Добавление суффикса ко многим файлам при сохранении расширений
  • mv: добавить номер в имя файла, если цель существует
  • Как переместить каталог в существующий каталог?
  • Конвертировать год-месяц-день в день недели в имени файла
  • Пакетное переименование длинных имен файлов переменной длины с годами
  • Мне нужна команда, которая может удалить последние 11 символов из всех них, но все равно оставляя расширение. Оглядевшись, я увидел команду «переименовать», но я не уверен, что это сработает для меня.

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

  • Резервный файл с расширением .bak _before_ filename
  • Переименование файлов на основе содержимого JSON
  • переместите каталог с одним символом (обратная цитата) в качестве его имени
  • Переименование и очистка имен файлов телепередач - S01E01.mp4 и т. Д.
  • Пакетное переименование "case duplicates"
  • копировать и переименовывать файлы 2
  • 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 - лучшая ОС в мире.