一次性重命名多个文件 - 该命令有什么问题?

一次性重命名多个文件 - 该命令有什么问题?

我的目录中有多个文件:

$ ls -1
04PD.001
04PD.002
04PD.003
04PD.004
04PD.005

现在我想将每个文件的名称更改为类似的名称04PD.7z.0*

有人能告诉我该命令有什么问题吗:

$ find 04PD* -type f -print -exec mv \{\} `echo \{\} | sed "s/04PD\.0/04PD\.7z\.0/"` \;

结果非常奇怪:

$ find 04PD* -type f -print -exec mv \{\} `echo \{\} | sed "s/04PD\.0/04PD\.7z\.0/"` \;
04PD.001
mv: '04PD.001' and '04PD.001' are the same file
04PD.002
mv: '04PD.002' and '04PD.002' are the same file
04PD.003
mv: '04PD.003' and '04PD.003' are the same file
04PD.004
mv: '04PD.004' and '04PD.004' are the same file
04PD.005
mv: '04PD.005' and '04PD.005' are the same file

为了测试该命令,我将命令更改为简单的 echo:

$ find Pop*04PD* -type f -print -exec echo mv \{\} `echo \{\} | sed "s/04PD\.0/04PD\.7z\.0/"` \;
04PD.001
mv 04PD.001 04PD.001
04PD.002
mv 04PD.002 04PD.002
04PD.003
mv 04PD.003 04PD.003
04PD.004
mv 04PD.004 04PD.004
04PD.005
mv 04PD.005 04PD.005

注意:我已经找到了一个非常好的且简单的带有循环的解决方案,因此请重点关注此命令的问题,而不是提出另一个解决方案。

我很好奇错误在哪里。

相关内容