在下面的命令将tar所有的“点”文件和文件夹:
tar -zcvf dotfiles.tar.gz .??*
Run Code Online (Sandbox Code Playgroud)
我熟悉正则表达式,但我不明白如何解释.??*. 我执行ls .??*并tree .??*查看了列出的文件。为什么此正则表达式包含文件夹中以.例如开头的所有文件?
jw0*_*013 32
Glob不是正则表达式。通常,shell 会尝试解释您在命令行中输入的任何未引用为 glob 的内容。Shell 根本不需要支持正则表达式(尽管实际上许多更高级的更现代的都支持,例如构造中的=~正则表达式匹配运算符bash [[)。
这.??*是一个球体。它匹配以文字点开头的任何文件名.,后跟任意两个(不一定相同)字符??,后跟等价于 的正则表达式[^/]*,即 0 个或多个不是 的字符/。
有关 shell 路径名扩展(“globbing”的全名)的完整详细信息,请参阅POSIX 规范。