使用 find 和 cp 将 .jpg 文件从很多目录复制到一个新路径时出现问题

Problems using find and cp to copy just .jpg files from a LOT of directories to one new path

我试过搜索,但找不到我的具体问题的答案。 当我使用时,

find /recovered_files "*.jpg" -type f -exec cp {} /out \;

要从 /recovered_files 目录中的目录复制所有 .jpg 文件,/out 目录会填充源中的每个文件(jpg、txt、xml 等)目录。 谁能解释一下我的愚蠢之处,pleeeeeeease???

非常感谢,马克。

你现在所做的相当于为每个文件调用cp /dir/dir/dir/file.jpg /out,这会将文件复制到/out。因此,所有文件都放在同一个目录中。

rsync 允许过滤器 select 仅复制某些文件。将 fromto 更改为以下相应目录:

rsync -r from/* to --include=*.jpg --filter='-! */' --prune-empty-dirs

此解决方案归功于 this post

编辑:更改为 rsync 解决方案。原文如下:

find from -name "*.jpg" -type f -exec mkdir -p to/$(dirname {}) \; -exec cp --parents {} to \;

您应该将 fromto 替换为适当的位置,如果 from/ 开头,则此表单将无法正常工作。如果需要,只需先 cd/。此外,您最终会在 from 的整个目录结构下看到 to 中的所有文件,但您可以将它们再次移出。