在bash中复制图像而不更改子文件夹

在bash中复制图像而不更改子文件夹

我可以复制*.png文件而不改变子文件夹地址和名称吗?

例如:复制到/photo/pic转换/photo/2017/hello.png/pic/2017/hello.png

答案1

首先创建要复制到的目录:

mkdir -p pic/2017

然后复制文件。通常只需要cp

cp photo/2017/*.png pic/2017/

正如您所提到的,文件太多,您可能会收到“参数列表太长”错误,我们将根据需要使用printfxargs运行:cp

printf "%s\0" photo/2017/*.png | xargs -0 cp -t pic/2017/

您还可以mcp使用mmv包裹安装 mmv方式如下:

mcp -n "photo/2017/*.png" pic/2017/

-n让我们mcp只列出更改,删除它以实际执行复制。注意星号:它不是由 shell 评估,而是由 评估mcp

答案2

您想要的是递归复制目录,因此您应该执行以下操作:

cp -a /photo /pic

这将递归复制所有文件和目录并保留文件元数据。

如果/photo有文件不是png您不想复制的文件,您可以在执行上述命令后执行以下操作:

find /pic -not -iname '*.png' -type f -print0 | xargs --no-run-if-empty -0 rm

相关内容