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}’

菜鸟手书,欢迎指正

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值