0

我正在尝试查找所有图像并将其从一个位置复制到另一个位置,以保留文件夹结构。我尝试使用以下命令:

 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

命令有什么问题?有更好的方法吗?

问候

4

2 回答 2

2

我不确定你为什么会得到 sigpipe。

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

寻找 。-type f -print | xargs 文件 | 啊……

那就是——让 find 打印出来并 xargs file 运行 file 命令。

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

于 2015-03-05T00:06:15.110 回答
2

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

rsync -avz --include='[iI]mage' --include='EPS' --exclude='*' source/ output/

要测试命令添加 rsync --dry-run 选项:

--dry-run 执行不做任何更改的试运行

您可以在此线程中找到一些 rsync 包含参数的示例。

于 2015-03-05T00:15:50.573 回答