Bash 查找并复制保留文件夹结构的所有图像

Bash 查找并复制保留文件夹结构的所有图像,bash,find,cpio,Bash,Find,Cpio,我试图找到并复制所有的图像从一个位置到另一个保存文件夹结构。 我已尝试使用以下命令: sudo find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}' | cpio -pdm /media/newlocation 这可以在几分钟内正常工作(我有千兆字节的文件要查找和复制),但一段时间后,我出现以下错误: find: `file' terminated by signal 13 这个命

我试图找到并复制所有的图像从一个位置到另一个保存文件夹结构。 我已尝试使用以下命令:

 sudo find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}'  | cpio -pdm  /media/newlocation
这可以在几分钟内正常工作(我有千兆字节的文件要查找和复制),但一段时间后,我出现以下错误:

find: `file' terminated by signal 13
这个命令怎么了? 有更好的方法吗


问候

我不知道你为什么会得到sigpipe

与其让find执行exec,不如尝试:

找到-键入f-打印| xargs文件| awk

也就是说,只需让find打印它们,然后使用xargs文件来运行file命令


请注意,sudo命令将执行查找,但不会执行整行。这会给你带来更多的麻烦(如果你需要sudo的话)。

我不知道你为什么会得到sigpipe

与其让find执行exec,不如尝试:

找到-键入f-打印| xargs文件| awk

也就是说,只需让find打印它们,然后使用xargs文件来运行file命令


请注意,sudo命令将执行查找,但不会执行整行。这将给您带来更多的麻烦(如果您需要sudo)。

您可以使用rsync将一个目录复制到另一个目录。如果您只需要一些特定的文件,请随意使用
--exclude
--include
选项

rsync -avz --include='[iI]mage' --include='EPS' --exclude='*' source/ output/
要测试命令add rsync--dry run选项:

--试运行在不做任何更改的情况下进行试运行


您可以在此找到一些rsync include参数的示例。

您可以使用rsync将一个目录复制到另一个目录。如果您只需要一些特定的文件,请随意使用
--exclude
--include
选项

rsync -avz --include='[iI]mage' --include='EPS' --exclude='*' source/ output/
要测试命令add rsync--dry run选项:

--试运行在不做任何更改的情况下进行试运行


您可以在此找到rsync include参数的一些示例。

可能find的exec命令不正确?在管道前面尝试一下
-exec file{}+
(也删除semcolon)。可能find的exec命令不正确?在管道之前尝试一下
-exec file{}+
(也删除semcolon)。它也可以与sudo命令完美配合。您的初始版本可能有问题。感谢@joseph larson的留言。谢谢,Will--包括检查该文件是否为图像?我想根据文件的mime类型(所有图像或可能的视频)而不是扩展名来查找和复制文件。ASFAIK,没有。没有这样的选项。我很抱歉。我错过了你命令管道中的
文件
。可能有一个解决办法。稍后我会检查它。它也会与sudo命令完美配合。您的初始版本可能有问题。感谢@joseph larson的留言。谢谢,Will--包括检查该文件是否为图像?我想根据文件的mime类型(所有图像或可能的视频)而不是扩展名来查找和复制文件。ASFAIK,没有。没有这样的选项。我很抱歉。我错过了你命令管道中的
文件
。可能有一个解决办法。我稍后再查。