在Linux中重命名文件名与列表

问题描述:

我想重命名一个目录中的所有文件文件名是1.ABC,2.ABC,3.ABC等我想将它们重命名为1.abc,2.abc, 3.abc ....等等。在Linux中重命名文件名与列表

我已经试过

ls -1 *.ABC| xargs -I{} mv {} ${{}/ABC/abc} 

但是这似乎并没有工作,没有给出误差

bash: ${{}/ABC/abc}: bad substitution. 

我想也重命名命令,但似乎并没有被我的系统上运行:

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

不给我结果。如果可以纠正,我想坚持使用第一种方法。

+0

另请参阅[为什么你不应该解析输出(1)](http://mywiki.wooledge.org/ParsingLs)以及Unix和Linux SE问题[为什么*不*解析'ls'?](https://unix.stackexchange.com/q/ 128985/1986) –

如果你有rename工具,那么你可以这样做:

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

否则你可以使用这个简单的for循环:

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

它的确如此,谢谢anubhava,我实际上意识到这一点,方法。我实际上是在寻找第一种方法ls-1 * .ABC |的修正xargs -I {} mv {} $ {{}/ABC/abc}'但我认为它只能在重命名时附加文件名时使用,而不是当你想要替换或删除部分字符串新的文件名称,如'ls -1 * .ABC | xargs -I {} mv {} {} _bkp' – Vicky

+0

通常,您应该避免分析'ls'的输出 – anubhava