私のディレクトリにはいくつかのファイルがあります。
$ 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
注:ループを使用して非常に優れた簡単な解決策をすでに見つけたので、他の解決策を見つけるのではなく、このコマンドの問題に焦点を当ててください。
どこでエラーが発生するのか疑問に思います。