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

Macos 使用find和cp将.jpg文件从许多目录复制到一个新路径时出现问题,macos,bsd,Macos,Bsd,我尝试了搜索,但找不到我具体问题的答案。 当我使用 查找/恢复_文件“*.jpg”-类型f-exec cp{}/out\ 要从/recovered_files目录中的目录复制所有.jpg文件,/out目录将填充源目录中的每个文件(jpg、txt、xml等)。 有人能解释一下我的愚蠢之处吗,拜托 非常感谢,Mark。您目前所做的工作相当于为每个文件调用cp/dir/dir/dir/file.jpg/out,这将把文件复制到/out。因此,所有文件都放在同一个目录中 rsync允许筛选器仅选择要复制

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

查找/恢复_文件“*.jpg”-类型f-exec cp{}/out\

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


非常感谢,Mark。

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

rsync
允许筛选器仅选择要复制的特定文件。将
更改为
到以下目录中的相应目录:

rsync -r from/* to --include=*.jpg --filter='-! */' --prune-empty-dirs
这一解决方案值得称赞

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

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

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

这很有魅力!先生,你是一个了不起的人,我感谢你的时间和专业知识!!!非常感谢。NP很高兴能帮忙。如果你认为答案能回答问题,请接受。