Найти и заменить имя файла рекурсивно в каталоге - PullRequest
35 голосов
/ 22 февраля 2012

Я хочу переименовать все файлы в папке, которая начинается с 123_xxx.txt в xxx.txt.

Например, в моем каталоге:

123_xxx.txt
123_yyy.txt
123_zzz.txt

I want to rename all files as:

xxx.txt
yyy.txt
zzz.txt

Я видел некоторыеполезные скрипты bash на этом форуме, но я все еще не понимаю, как использовать его для моих требований.

Предположим, я использую:

for file in `find -name '123_*.txt'` ; do mv $file {?.txt} ; done

Это правильный способ сделать это?

Ответы [ 12 ]

0 голосов
/ 11 июня 2017

При использовании переименования из util-linux 2.28.2 мне пришлось использовать другой синтаксис:

find -name "*.txt" -exec rename -v "123_" ""  {} ";" 
0 голосов
/ 22 февраля 2012
prename s/^123_// 123_*

См. имя в официальной вики Perl5 . Скопируйте для вашего удобства:

prename - скрипт, который переименовывает файлы в соответствии с регулярным выражением. (Где был опубликован оригинал?) Первоначально названный переименовывать, он в основном встречается как пре-имя, потому что оригинал конфликтует с командой переименования из пакета util-linux. Многочисленные вилки и повторные воплощения:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...