我在某个目录中有A.js
, B.js
,我想在 bash shell 中编写一个命令行来重命名这些文件 _A、_B、_C。C.js
我怎样才能做到这一点?
我试过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}'