4

我在某个目录中有A.js, B.js,我想在 bash shell 中编写一个命令行来重命名这些文件 _A、_B、_C。C.js我怎样才能做到这一点?

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

4

3 回答 3

8

怎么样

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

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

上面的命令将重命名A.js_A& 以此类推。

如果您想保留扩展名,以下应该会有所帮助:

rename 's/(.*)/_$1/' *.js
于 2013-03-13T08:48:47.850 回答
4

假设您仍想保留文件的扩展名,您可以这样做:

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

它将获取目录中每个文件的名称,并在前面加上一个“_”。

于 2013-03-13T08:36:12.307 回答
0

一种简单的本地方法,使用目录遍历

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

将重命名每个文件,在末尾添加扩展名 .txt。

还有一种更通用的并行化方式:

find -name "file*.p" | parallel 'f="{}" ; mv -- {} ${f:0:4}change_between${f:8}'
于 2015-12-29T12:10:39.577 回答