我正在尝试复制父目录中 960 个子目录中包含的单个特定文件。每个文件都有相同的名称,但内容各不相同。
我想维护新父目录中目录和名称的层次结构,但只想要一个特定的文件而不是每个子目录中的所有文件。
我还需要创建名为 processN 的每个子目录,其中 N 是从 0 到 959 的数字。
有什么想法吗?这让我很困惑,我似乎找不到一个不会花费我几个小时的好的解决方案。
答案1
rsync
--include
可以用一些技巧和标志来做到这一点--exclude
:
rsync -a -v --include="*/" --include="specific-file.txt" --exclude="*" from/ to/
这将复制所有目录和从specific-file.txt
到from
,to
同时跳过其他所有内容。该命令将保留下面的完整目录结构from
并将其复制到to
。您可能首先想使用开关运行此-n
命令以查看结果会
发生,即:
# check:
rsync -a -v -n --include="*/" --include="specific-file.txt" --exclude="*" from/ to/
# actually do:
rsync -a -v --include="*/" --include="specific-file.txt" --exclude="*" from/ to/