在bash中重命名多个文件

我在一个特定的目录中有A.jsB.jsC.js ,我想在bash shell中编写一个单一命令行来重命名这些文件_A,_B,_C。 我怎样才能做到这一点?

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

怎么样

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

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

上面的命令将A.js重命名为_A等。

如果你想保留扩展名,下面应该帮助:

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

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

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

它将获得目录中每个文件的名称,并预先加上一个“_”。

一个简单的本地方式来做到这一点, 目录遍历

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

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

而一个更普遍的并行化很酷的方式:

 find -name "file*.p" | parallel 'f="{}" ; mv -- {} ${f:0:4}change_between${f:8}'