仅递归复制图像并保留路径

use*_*394 5 filesystems find cp recursive

我正在处理网站迁移。我抓取了该站点,其中包含您在 URL 中看到的所有文件和目录结构。我想拉取所有图像,保持目录结构,并将它们复制到新位置。

例如,如果我有

/content1/index.php
/content1/page2.php
/content1/images/image1.jpg
/content1/images/image2.jpg
/content1/background/spacer.gif
/content1/background/background.gif
/content2/index.php
/content2/images/image3.jpg
/content2/background/spacer.gif
/content2/background/background.gif
Run Code Online (Sandbox Code Playgroud)

那我要

/content1/images/image1.jpg
/content1/images/image2.jpg
/content1/background/spacer.gif
/content1/background/background.gif
/content2/images/image3.jpg
/content2/background/spacer.gif
/content2/background/background.gif
Run Code Online (Sandbox Code Playgroud)

我可以使用该find命令获取仅包含图像文件的列表,但我不知道如何在保留其目录路径的同时操作每个文件。

我可以复制整个目录,然后递归删除任何非图像文件,但是现在我已经在自己之前设置了这个问题,我认为知道如何去做是值得的,以防万一我真的需要这样做以后就这样了。

jcj*_*gec 11

试试这个命令(findcp--parent选项):

find /source -regextype posix-extended -regex '.*(gif|jpg)' \
    -exec cp --parents {} /dest \; -print
Run Code Online (Sandbox Code Playgroud)