linux中查询某目录下以点开头的文件长列表展示

正常查看所有文件命令,-a表示可以查看隐藏文件
ls -a
通过查找命令,过滤出点开头的文件
grep "^\..*"
其中,^\. 表示以点开头,因为点在Linux中是特殊字符(需要反斜杠转义),表示任意某个字符,必须要匹配一个字符,空格也行,空格也表示一个字符,但是不能是空, * 表示某字符匹配0次或者多次,.* 连在一起就表示任意长度的字符
如果少了一个点是^\.* ,表示转义后的点符号匹配0次或多次,所以是不能只查出点开头的文件
正确命令是: ls -a | grep “^\..*”

但是如果想以长列表的格式输出呢,加个-l选项么?
经过测试 ls -al | grep “^\..*” 没有任何输出,原因是 ls -al 通过管道传过去的是长列表格式,每行数据不只是文件名,还有文件权限,属主,大小,时间等信息,就不能以上面的条件进行过滤了
通过观察长列表格式,点开头的文件都有时间参数,“数字+空格+点”这个格式就能匹配出点开头的文件
正确命令是:ls -al | grep “[0-9] \.”
但是这里有个小缺陷,如果文件中有data123 .log类似于这样格式的文件,那上面的命令就失效了

再来介绍个利用gawk进行过滤的方法
前面还是ls -al 通过管道传递输出给gawk
gawk逐行处理数据,默认以空格为分隔符,对每行进行切割,用$1取第一个字段,$2取第二个字段,以此类推,$0 表示本行的原数据,我们只要匹配文件名对应的 $9 字段即可,$9 ~ /^\./ 其中~表示精确匹配,篇幅有限,关于gawk其他的语法格式不再赘述
正确的命令是: ls -al | gawk ’ $9 ~ /^\./{print $0}’

菜鸟手书,欢迎指正

你可能感兴趣的:(LinuxAndShell)