Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux中使用列表重命名文件名_Linux_Bash_Rename - Fatal编程技术网

在Linux中使用列表重命名文件名

在Linux中使用列表重命名文件名,linux,bash,rename,Linux,Bash,Rename,我想重命名目录中的所有文件文件名为1.ABC、2.ABC、3.ABC等等我想将它们重命名为1.ABC、2.ABC、3.ABC。。。。等等 我试过了 ls -1 *.ABC| xargs -I{} mv {} ${{}/ABC/abc} 但这似乎不起作用,因为会产生错误 bash: ${{}/ABC/abc}: bad substitution. 我还尝试了重命名命令,但该命令似乎没有在我的系统上运行: rename 's/\.ABC$/.abc/' *.ABC 没有结果。如果可以纠正

我想重命名目录中的所有文件文件名为1.ABC、2.ABC、3.ABC等等我想将它们重命名为1.ABC、2.ABC、3.ABC。。。。等等

我试过了

 ls -1 *.ABC| xargs -I{}  mv {}  ${{}/ABC/abc}
但这似乎不起作用,因为会产生错误

bash: ${{}/ABC/abc}: bad substitution.
我还尝试了重命名命令,但该命令似乎没有在我的系统上运行:

rename 's/\.ABC$/.abc/' *.ABC

没有结果。如果可以纠正的话,我想继续使用我尝试过的第一种方法。

如果您有
重命名
实用程序,那么您可以执行以下操作:

rename 's/ABC/abc/' *.ABC
或者,您可以将此简单的
用于
循环:

for file in *.ABC; do
   mv "$file" "${file/.*/.abc}"
done

还可以看到Unix和Linux SE的问题,谢谢anubhava,我实际上知道这个方法。实际上,我在我的第一种方法
ls-1*.ABC|xargs-I{mv}${{}/ABC/ABC}
中寻找一个更正,但我认为它只能在重命名时附加文件名时使用,而不能在
ls-1*.ABC|xargs-I{mv}中替换或删除新文件名中的部分字符串时使用_bkp
通常,您应该避免解析
ls的输出