4

如何排除主目录中的所有点文件以及所有子目录中的点文件?

我尝试在我的排除文件中添加以下表达式,但由于某种原因它不起作用:

(^|/)\.[^/]*(/|$)

此外,以下内容也不起作用:

.*
.*/**
4

1 回答 1

6

请先尝试以下带有选项的命令,--dry-run以确保获得预期的结果。

从当前目录中排除 .dotfiles 和 .folders

您可以使用该选项--rexclude "^\."来匹配以 a 开头的文件和文件夹.(但它不会匹配子目录中的 .dotfiles)。

示例输出s3cmd sync --rexclude "^\." ./ s3://bucket_name

exclude: .ignoreFile
exclude: .ignoreFolder/andItsContents
./normalFolder/.ignoreFile -> s3://bucket_name/normalFolder/.ignoreFile

上面的命令在当前文件夹中排除 .dotfiles ./ 并继续上传 normalFolder/.ignoreFile

从子目录中排除 .dotfiles

要从子目录中排除点文件,您可以使用--rexclude "\/\."

示例输出s3cmd sync --rexclude "\/\." ./ s3://bucket_name

exclude: .ignoreThis
exclude: .ignoreFolder/.ignoreThis
exclude: .ignoreFolder/notadotfile
exclude: normalFolder/.ignoreThis

所以你的问题的答案应该类似于以下命令:

s3cmd --rexclude "^\." --rexclude "\/\." ./ s3://bucket_name

使用的正则表达式锚的解释:

^   Start of string, or start of line in multi-line pattern
\   Escape following character

有用的参考资料:
正则表达式备忘单

s3cmd 同步方法

于 2014-01-13T17:59:57.923 回答