猜完这个我就厌烦了:
ls -A | grep -E ^.
我以为正则表达式插入符号^
的意思是“行以...开头”。我希望使用正则表达式^.
来匹配以点开头的文件...但我仍然看到常规文件而不仅仅是隐藏目录(以句点开头的目录,例如 .ssh 和 .config)。
将会重复未回答的问题:仅显示特定目录中的隐藏文件
正确输出示例:
.aws
.bash_history
.bashrc
.cache
.cloud-locale-test.skip
.config
.dbshell
.gnupg
答案1
您需要.
在将其传递给 grep 时对其进行转义,否则它将被解释为“任何字符”。grep 接受\
转义字符。但是,shell 也使用\
转义,因此您需要将整个模式放在单引号中:
ls -a | grep '^\.'
答案2
@mikel 的第一个答案是正确的,但更短的替代方案是ls -ad .*
。它也更容易记住(对我来说),尽管它在输出中包含“。”和“.。”。您可以使用ls -ad .??*
以确保它们不会出现,但这有点难记住。