1

Возможный дубликат:
Пакетное переименование файлов в Linux

У меня есть список из 1000 файлов в каталоге в моей системе Linux, как это:

01-Star_Network.en.srt  
02-Subsets.en.srt  
03-Function_Comparision.en.srt

Я хочу исключить .en из всех файлов и переименовать их в:

01-Star_Network.srt  
02-Subsets.srt  
03-Function_Comparision.srt

Есть ли для этого скрипты bash, python, java или PHP?

3 ответа3

1

Просто используйте эту команду:

rename 's/\.en\.srt$/.srt/' *.srt

rename Perl rename , это по умолчанию в Ubuntu :

$ LANG=C update-alternatives --display rename
rename - auto mode
  link currently points to /usr/bin/prename
/usr/bin/prename - priority 60
  slave rename.1.gz: /usr/share/man/man1/prename.1.gz
Current 'best' version is '/usr/bin/prename'.

Он устанавливается вместе с пакетом perl Ubuntu .

1

Следующая команда сделает это:

find . -name '*.en.srt' | sed 'h; s/.en.srt$/.srt/; H; x; s/\n/ /' | xargs -l mv
  • find находит файлы для переименования
  • sed редактирует имя файла
  • xargs вызывает команду mv для каждого имени файла, чтобы сделать работу

Чтобы сначала проверить, что вы делаете, попробуйте добавить 'echo' непосредственно перед mv, вот так:

find . -name '*.en.srt' | sed 'h; s/.en.srt$/.srt/; H; x; s/\n/ /' | xargs -l echo mv
0

rename из util-linux должно сделать то же самое:

rename .en.srt .srt *.en.srt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .