在bash中重命名多个文件

时间:2013-03-13 08:27:06

标签: linux bash shell

我在某个目录中有A.jsB.jsC.js,我想在bash shell中编写一个SINGLE命令行来重命名这些文件_A,_B,_C。我怎么能这样做?

我尝试了find -name '*.sh' | xargs -I file mv file basename file .sh但它不起作用,basename文件.sh未被识别为嵌套命令

3 个答案:

答案 0 :(得分:8)

怎么样

rename 's/(.*).js/_$1/' *.js

检查系统上重命名的语法。

上述命令会将A.js重命名为_A&等等。

如果您想保留扩展程序,请在下方提供帮助:

rename 's/(.*)/_$1/' *.js

答案 1 :(得分:4)

假设你仍然希望在文件上保留扩展名,你可以这样做:

$ for f in * ; do mv "$f" _"$f" ; done

它将获取目录中每个文件的名称,并添加“_”。

答案 2 :(得分:0)

一种简单的原生方式,使用目录遍历

find -type f | xargs -I {} mv {} {}.txt

将重命名每个文件,最后添加扩展名.txt。

使用并行化

,这是一种更为一般的酷炫方式
find -name "file*.p" | parallel 'f="{}" ; mv -- {} ${f:0:4}change_between${f:8}'