Linux 如何在Bash中使用ls命令仅显示目录中的隐藏文件

Linux 如何在Bash中使用ls命令仅显示目录中的隐藏文件,linux,bash,unix,ls,Linux,Bash,Unix,Ls,我试图单独使用ls命令显示目录中的隐藏文件,除了。而且 但是命令返回。和目录名也在输出中。尽管我提到了ls的一个选项,但这个命令有什么错误。这里是供参考的,但答案是 你的地球仪是错的: .* 将扩展到…和。。。您可以将glob更改为以下内容: .??* 但这将不匹配隐藏文件,如:.a、.b。或。[^.]*但这将不匹配像..a、..b这样的文件,将两者结合可能是一种选择: ls -lAd .[^.]* ..?* 但这很可能是yeild:ls:error:…?*没有这样的文件或目录。启用nu

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


但是命令返回。和目录名也在输出中。尽管我提到了ls的一个选项,但这个命令有什么错误。

这里是供参考的,但答案是

你的地球仪是错的:

.*
将扩展到…和。。。您可以将glob更改为以下内容:

.??*
但这将不匹配隐藏文件,如:.a、.b。或。[^.]*但这将不匹配像..a、..b这样的文件,将两者结合可能是一种选择:

ls -lAd .[^.]*  ..?*
但这很可能是yeild:ls:error:…?*没有这样的文件或目录。启用nullglob将防止出现以下情况:

shopt -s nullglob
ls -lAd .[^.]*  ..?*
但是,如果目录中没有隐藏文件,这将扩展到ls-lAd,它将显示当前的工作目录

或者,您可以通过管道将输出从ls传输到awk,但这很可能会去除颜色:

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

也考虑阅读:

< P>这是供参考的,但是答案是由

给出的。 你的地球仪是错的:

.*
将扩展到…和。。。您可以将glob更改为以下内容:

.??*
但这将不匹配隐藏文件,如:.a、.b。或。[^.]*但这将不匹配像..a、..b这样的文件,将两者结合可能是一种选择:

ls -lAd .[^.]*  ..?*
但这很可能是yeild:ls:error:…?*没有这样的文件或目录。启用nullglob将防止出现以下情况:

shopt -s nullglob
ls -lAd .[^.]*  ..?*
但是,如果目录中没有隐藏文件,这将扩展到ls-lAd,它将显示当前的工作目录

或者,您可以通过管道将输出从ls传输到awk,但这很可能会去除颜色:

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

也可考虑阅读:

你可以使用内部变量。

$ GLOBIGNORE=.:.. ls -ld .*
可以使用内部变量

$ GLOBIGNORE=.:.. ls -ld .*
在这里,您将忽略所有不以开头的文件和目录

额外:您可以为任何目录调用它,如果您将它用作.bashrc中的别名,这会很方便

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

lsh /path/directory
在这里,您将忽略所有不以开头的文件和目录

额外:您可以为任何目录调用它,如果您将它用作.bashrc中的别名,这会很方便

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

lsh /path/directory

. 和也隐藏了与通配符匹配的文件。和还有。@TristanT这就是问题所在-一场表演。除了跳过什么都可以。和[与包括它们的-a相反]。我不确定ls一个人能做到。我会做ls-lAd | grep'^[.]'。根据ls-l格式调整grep,通常使用ls-la。忽略了目录项。。和也隐藏了与通配符匹配的文件。和还有。@TristanT这就是问题所在-一场表演。除了跳过什么都可以。和[与包括它们的-a相反]。我不确定ls一个人能做到。我会做ls-lAd | grep'^[.]'。根据ls-l格式调整grep,通常使用ls-la。忽略了目录项。即使使用nullglob,如果没有隐藏的文件或目录,2个glob.[^.]*&..?*将扩展为空字符串。这将只执行ls-lAd命令,给出一个命令。结果。@anishsane你是对的。谢谢你注意到我!我将保留我的答案作为参考,但我可以看出您提供了一个更好的解决方案:-我意识到有点晚了-使用nullglob set,您或我的-两个答案的行为将相同。因此,对于nullglob,我们应该将它们传递给其他一些构造,如echo.[^.]*.*?*或for f in.[^.]*.*?*。如果未设置nullglob,我们的两个答案都将打印一个错误,即file.[^.]*.*未找到或file.*未找到…即使使用nullglob,如果没有隐藏的文件或目录,2个glob.[^.]*&.*将扩展为空字符串。这将只执行ls-lAd命令,给出一个命令。结果。@anishsane你是对的。谢谢你注意到我!我将保留我的答案作为参考,但我可以看出您提供了一个更好的解决方案:-我意识到有点晚了-使用nullglob set,您或我的-两个答案的行为将相同。因此,对于nullglob,我们应该将它们传递给其他一些构造,如echo.[^.]*.*?*或for f in.[^.]*.*?*。如果没有nullglob set,我们的两个答案都会打印一个错误,即file.[^.]*..?*未找到或file.*未找到…谢谢@anishsane。但是,如果我像在脚本中一样设置它,我是否必须在退出脚本之前以某种方式取消设置GLOBIGNORE?假设您执行脚本&而不是源代码,则无需取消设置变量。我获得了自由并编辑了文章。现在,该变量将仅对ls可见,而对scriptThank@anishsane不可见。但是,如果我像在脚本中一样设置它,我是否必须在退出脚本之前以某种方式取消设置GLOBIGNORE?假设您执行脚本&而不是源代码,则无需取消设置变量。我获得了自由并编辑了文章。现在,该变量将仅对ls可见,而对脚本不可见