我有一个具有嵌套结构的目录“images”,其中某处有 .png 文件。我还有一个普通目录“svg”,里面有一堆 .svg 文件。我需要将每个 .svg 文件移动到同名的 .png 文件所在的同一目录中。
此命令适用于单个给定的 .svg 文件:
find /images -name 'sample.png' | grep -v thumb | xargs -i{} dirname {}|xargs -0 -I {} mv /svg/sample.svg {}
应用 grep -v thumb 是因为对于每个 .png 文件,在名为“thumb”的其他子目录中都有同名的缩略图文件。
我尝试为所有文件编写此命令:
find /svg/ -name "*.svg" -exec basename {} '.svg' \; | xargs -O -I {} "find /images/ -name {}"
但我收到并错误:“basename”由信号 13 终止
此外,如果第二个命令有效,下一步是将其与第一个命令结合起来,但这里还有另一个问题:我如何将给定的文件名发送到最终命令“mv”(参见代码中的 {???}) ?
find /svg/ -name "*.svg" -exec basename {} '.svg' \; | xargs -O -I {} "find /images/ -name {}" | grep -v thumb | xargs -i{} dirname {}|xargs -0 -I {} mv /svg/{???} {}