我尝试了搜索,但无法找到我特定问题的答案。 当我使用时,
find / restored_files" *。jpg" -type f -exec cp {} / out \;
从/ recover_files目录中的目录复制所有.jpg文件,/ out目录从源目录中填充每个文件(jpg,txt,xml等)。 任何人都可以解释我的愚蠢在哪里,pleeeeeease ???
非常感谢,Mark。
答案 0 :(得分:0)
您当前正在做的事情相当于为每个文件调用cp /dir/dir/dir/file.jpg /out
,这会将文件复制到/out
。因此,所有文件都被放入同一目录。
rsync
允许过滤器仅选择要复制的特定文件。将from
和to
更改为以下相应目录:
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 \;
您应该使用适当的位置替换from
和to
,如果from
以/
开头,则此表单无法正常工作。如果需要,请先cd
到/
。此外,您最终会在to
的整个目录结构下面的from
内找到所有文件,但您可以将它们再次移出。