gpt4 book ai didi

linux - rsync,仅包括某些文件类型,不包括某些目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:06 25 4
gpt4 key购买 nike

我只想同步某些文件类型(例如 .py)并且我想排除某些目录(例如 venv)。

这是我试过的:

rsync -avz --include='*/' --exclude='venv/' --include='*.py' --exclude='*' /tmp/src/ /tmp/dest/

但它不起作用。

我错过了什么?

最佳答案

使用 rsync,您不需要使用 --include="*.py" 来包含 '*.py' 文件副本。 --include 选项将只包含之前被 --exclude= 排除的文件。 rsync** 指定为通配符说明符。例如,如果你想复制当前目录(和子目录)中的所有 .py 文件,但不复制 venc 目录中的任何内容,你可以执行类似的操作:

rsync -uav --exclude="venc" **.py destination

(注意 -a 表示-rlptgoD)

这将递归地将当前工作目录中的所有 .py 文件复制到 destination,不包括 venc 目录。

要从当前路径下的所有目录中递归复制 *.py 文件,不包括任何 venc 目录,您可以使用 的结果构建一个临时文件查找包含*.py 文件的 并排除路径中包含venc/ 的文件,然后使用 传输临时文件中的所有文件名>--files-from--no-R (无相关)选项到 rsync 为:

$ find /path/to -type f -name "*.py" | grep -v 'venc/' > tmpfile \
rsync -uav --no-R --files-from=tmpfile / host:/dest/dir \
rm tmpfile

这将捕获所有子目录中的所有 *.py 文件,不包括所有目录,包括名称 venc/ 和它们下面的任何内容。需要 --no-R 选项来防止 tmpfile 中的绝对文件名被视为相对于当前工作目录。

关于linux - rsync,仅包括某些文件类型,不包括某些目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com