我在某个目录中有 A.js
, B.js
, C.js
这几个文件,我想要编写一个单行命令在 bash shell 中将这些文件重命名为 _A, _B, _C。该如何操作?
我尝试过 find -name '*.sh' | xargs -I file mv file basename file .sh
但它无法工作,因为basename file .sh没有被识别为一个嵌套命令。
rename 's/(.*).js/_$1/' *.js
请检查您系统上的重命名语法。
以上命令将把A.js
重命名为_A
等等。
如果您想保留扩展名,请执行以下操作:
rename 's/(.*)/_$1/' *.js
'rename "from_regex" "to_string" files_filter'
而不是rename 's/from_regex/to_string/' files_filter
。 - anishsane$ 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}'
basename file .sh
,但它无法正常工作,因为“basename file .sh”不被识别为嵌套命令。 - andPat