rsync 包括所有目录和某些子目录以及最后一个子目录的 *.java

rsync 包括所有目录和某些子目录以及最后一个子目录的 *.java

我尝试 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标题“过滤规则”下的更多示例。

相关内容