xargsでsedを使用する

xargsでsedを使用する
echo './2d41d907b7cb558db6f3ca49e992ad8/rendering/02.png' | xargs -I {} cp {} `echo {} | sed s'/\///g' `

これにより、次のエラーが発生しました。

cp: './2d41d907b7cb558db6f3ca49e992ad8/rendering/02.png' and './2d41d907b7cb558db6f3ca49e992ad8/rendering/02.png' are the same file

sedがうまくいかないようです...

私は結局このようなことをしたいです。

find . -name "*.png" | xargs -I {} cp {} ../`echo {} | sed s'/\///g' `

forループやexecは使用されません。

答え1

代わりにこのコードを使用できます。

find . -type f -name '*.png' -exec sh -c 'echo cp "$1" ../"${1//\/}"' cp_sh {} \;

echoテストの実行結果が満足であれば削除してください。

関連情報