我尝试 rsync 包含所有目录,但每个子目录中只包含一个包含特定文件的目录。例如,
rsync -auvz --include '*' --include '*/certain_sub/' --include '*/certain_sub/*.java' --exclude '*' 源 目标
但是这会给我所有目录和子目录及其所有文件,因为我在第一个包含中包括了所有内容,所以我接受了。为了更清楚地解释,有一群学生,每个人都在自己的目录中有他们所有的实验室和家庭作业。我想获取相关作业的子目录(例如 homework09)和该子目录的所有文件。我对 rsync 相当陌生,但这可以帮助我整理数百个文件并节省大量时间。
答案1
使用简单--include
和--exclude
规则在这里不起作用。但 rsync--filter
也提供了。
我认为rsync -ruvpgot --filter '+ *.java' certain_sub/ dest/
它会按照您的要求执行,即复制所有目录,甚至是空目录,但在目录中,只复制与模式“*.java”匹配的文件。请参阅man rsync
标题“过滤规则”下的更多示例。