有一个Perl rename
命令应该可以解决问题。但是要当心:有几个称为的不同命令rename
,因此请确保您已经获得了以a perlexpr
作为参数的Perl脚本。这是软件包在Debian和衍生产品(Ubuntu,Mint,…)上rename
提供的命令perl
,但在其他发行版中却没有提供,该工具可能具有称为的其他实用程序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
如您所见,它是幂等的 -多次调用时不会再次添加前缀。
通过用()替换字符串(^
)的(零长度)开头或以开头(后跟可选prefix
字符串)的方式工作prefix
。
我将把它封装在shell脚本或shell函数中作为练习:)
Postfix有点难,因为您必须弄清楚文件名的哪一部分构成了扩展名...