我正在读“Linux如何工作”这本书。作者给出了以下正则表达式,这样我就可以获得除当前目录和父目录之外的所有点文件。(第21页)
.??*
.[^.]*如果目录中存在任何点文件,那么这两个文件都可以工作。但是当不存在点文件时,只有第一个文件可以工作。
我不能理解他们。你能描述一下我吗?
$ ls -a
. .. .hiding something
$ ls -a | grep .??*
.hiding
$ ls -a | grep .[^.]*
.hiding
$ mv .hiding hiding
$ ls -a | grep .??*
$ ls -a | grep .[^.]*
.
..
hiding
something发布于 2015-08-25 15:29:07
第一种方法没有实际意义,对我来说也不起作用,而且我也找不到任何关于??的文档。
无论如何,这两个正则表达式都存在两个问题:
.匹配任何字符。为了只匹配一个点,你必须在它前面放一个表达式,就像\..^.开始吧
Try:ls -a | grep '^\.[^.]'这意味着:从行首开始,找到一个点。然后,括号之间没有列出的任何字符(这里的第二个^完成了求反操作),所以不是一个文字点。
在括号中,您不必使用\,尽管您可以使用。
https://stackoverflow.com/questions/32196775
复制相似问题