Там в Perl rename
команда , яка повинна зробити трюк. Але rename
будьте обережні : є кілька різних команд, які викликаються , тому переконайтеся, що у вас є сценарій Perl, який очікує perlexpr
аргумент. Це rename
команда, надана perl
пакетом на Debian та похідних (Ubuntu, Mint, ...), але не для інших дистрибутивів, які можуть мати іншу утиліту rename
.
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
Як бачите, він idempotent - він не додасть префікса знову, коли ви будете викликати його кілька разів.
Він працює або замінивши (нульову довжину) початок рядків ( ^
), або початок, а потім додатковий prefix
рядок на prefix
.
Я залишу це інкапсуляцію або в скрипті оболонки, або в функції оболонки, як вправу для вас :)
Постфікс трохи складніше, тому що ви повинні з'ясувати, яка частина імені файлу являє собою розширення ...