如何在bash中仅使用ls命令在目录中显示隐藏文件(除了。和..)

时间:2016-06-16 04:56:56

标签: linux bash unix ls

我试图单独使用ls命令显示目录中的隐藏文件。

ls -lAd .*

但命令返回。和..目录名也在输出中。即使我提到过这个命令有什么不对," A"选项与ls。

3 个答案:

答案 0 :(得分:3)

您可以使用GLOBIGNORE内部变量。

for

答案 1 :(得分:1)

这是供参考,但答案由@anishsane below给出。

你的小球是错的:

.*

将扩展为...。您可以将glob更改为:

.??*

但这与以下隐藏文件不匹配:.a.b。或.[^.]*,但与..a..b等文件不匹配,两者结合可能是一个选项:

ls -lAd .[^.]*  ..?*

但这很可能会发生:ls: error: ..?* no such file or directory。启用nullglob将阻止此:

shopt -s nullglob
ls -lAd .[^.]*  ..?*

如果目录中没有隐藏文件,这将显示为ls -lAd,这将显示当前工作目录(.

另外,您可以将ls的输出传输到awk,但这很可能会消除颜色:

ls -lA | awk '$9 ~ /^\./'

另请考虑阅读:Why you shouldn't parse the output of ls(1)

答案 2 :(得分:0)

ls -Al --ignore="[^.]*"

忽略所有不是以.开头的文件和目录

其他:您可以为任何目录调用此目录,如果您将其用作.bashrc中的别名,该目录将很方便

alias lsh='ls -Al --ignore="[^.]*"'

就做

lsh /path/directory