将 sed 与 xargs 一起使用

将 sed 与 xargs 一起使用
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当您对试运行结果感到满意时删除。

相关内容