我在某个目录中有A.js
,B.js
,C.js
,我想在bash shell中编写一个SINGLE命令行来重命名这些文件_A,_B,_C。我怎么能这样做?
我尝试了find -name '*.sh' | xargs -I file mv file basename file .sh
但它不起作用,basename文件.sh未被识别为嵌套命令
答案 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}'