如何列出包含.和..但不含隐藏文件的文件与目录?
嘿,这个需求其实用几个简单的ls命令组合就能轻松搞定,我给你两种靠谱的实现方法:
方法1:直接指定目标条目+通配符匹配
运行这条命令就行:
ls -d . .. *
拆解一下各部分的作用:
-d:让ls显示目录本身,而不是自动展开目录里的内容(如果不加这个参数,ls会把.当成当前目录并列出里面的所有内容,这不是我们要的效果).和..:明确指定要显示当前目录和上级目录的条目*:匹配当前目录下所有非隐藏的文件和目录(shell的通配符*默认不会匹配以.开头的文件,刚好帮我们排除了其他隐藏文件)
如果当前目录没有非隐藏文件,这条命令可能会输出错误提示,你可以把错误输出重定向到/dev/null来避免:
ls -d . .. * 2>/dev/null
方法2:结合ls的隐藏过滤选项
如果你更习惯用-a参数(显示所有条目),可以搭配--hide参数精准过滤:
ls -a --hide='.[!.]*'
解释一下逻辑:
-a:先让ls显示所有条目(包括.、..和所有隐藏文件)--hide='.[!.]*':告诉ls隐藏所有以.开头、且第二个字符不是.的文件——这就刚好排除了除.和..之外的所有隐藏文件,完美符合你的需求
内容的提问来源于stack exchange,提问作者yossico
相关产品推荐
相关产品推荐

