複数のファイルの名前を一度に変更します。このコマンドにはどのような問題がありますか? [コピー]

複数のファイルの名前を一度に変更します。このコマンドにはどのような問題がありますか? [コピー]

私のディレクトリにはいくつかのファイルがあります。

$ 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

コマンドをテストするために、コマンドを単純なエコーに変更しました。

$ 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

注:ループを使用して非常に優れた簡単な解決策をすでに見つけたので、他の解決策を見つけるのではなく、このコマンドの問題に焦点を当ててください。

どこでエラーが発生するのか疑問に思います。

ベストアンサー1

おすすめ記事