linux 入门3 -ls 命令

摘录自:https://www.cnblogs.com/bailandecheng/p/9310407.html

https://www.cnblogs.com/sparkdev/p/7476005.html

linux ls统计文件个数:https://www.jianshu.com/p/2362c113e28a-->计数命令wc( https://www.cnblogs.com/peida/archive/2012/12/18/2822758.html)

1.inux下的文件类型

在Linux下一切皆文件 everything is file,包括目录也是文件的一种而这些文件被分为七种类型:

• -:普通文件  

• d: 目录文件

• b: 块设备

• c: 字符设备

• l: 符号链接文件  

• p: 管道文件pipe

• s: 套接字文件sock

2.

ls用法:ls  [参数]  [目录名]

        (如过要显示当前目录的文件可不加目录名)

ls常用参数

-a 显示所有文件,包含隐藏文件

     -A 显示所有文件,包含隐藏文件,但不包含.及..

 -l  显示为long format(长格式),列出文件的类型、权限、链接数、owner、group、大 小,时间,名字

     -R   

     -d 不展开目录,只显示目录自身,一般与-l配合使用以显示目录自身的属性信息(只显示当前目录的内容)

     -1 数字1,成列显示内容

     -S 以文件大小排序显示,默认从大到小 -r后,从小到大

     -U 按存放顺序排序显示

     -X 按扩展名的首字母来排序

     -t  按mtime排序(先显示时间最近的)

     -ul  按atime排序(先显示时间最近的)

     -ct  按ctime排序(先显示时间最近的)

          补充:

关于时间戳:

          atime  访问时间

          mtime 数据修改时间 (写入,修改数据mtime改变,mtime改变ctime必改变)

          ctime  元数据修改时间 (修改权限的时候只有ctime改变)

扩展: 如何通过ls只显示指定格式的文件

常用通配符:

* 匹配0或多个任意字符

? 匹配任意1个字符

[  ]  当中括号内为几个确定字符时,表示匹配括号内任意一个字符,当中括号内为一个范围时表示匹配这个范围中的任意一个字符(中括号表示的是一个范围,匹配的是一个字符)

例:

  [ab46e] 表示是a,b,4,6,e中的任意一个字符

 [a-z] 表示aAbBcC……z(Linux中的默认编码顺序是一个小写字母一个大写字母即aAbBcC.....Z)

         [A-Z] 表示AbBcC……Z

        [a- Z] 表示所有大小写字母

        [^ae] 表示即不是a也不是e的其他任意单一字符

[:lower:] 表示一个小写字母

[:upper:] 表示一个大写字母

[:alpha:] 表示一个大小写字母 等同于[a-Z]

[:digit:]  表示任意一个数字 等同于[0-9]

[:alnum:] 表示任意一个字母或数字 等于[a-Z0-9]或[[:digit:][:alpha:]]

[:blank:]:一个水平空白字符

[:space:]:一个水平或垂直空白字符(文件名不可能包含回车,故此处使用与[:blank:]:效果相同)

[:punct:]: 表示一个符号

通过ls命令和通配符查找指定格式的文件:

  格式:ls  [参数]  [目录名][通配符]

以下是一些例子:

1. 查找/usr/share/man 目录下以m开头且以一个数字加x结尾的文件

命令:ls  -d  /usr/share/man/m*[0-9]x

运行结果:

解释:-d 只展开一级目录

      /usr/share/man/  目录路径

  m*[0-9]x  m表示以m开头,[0-9]x表示以数字加x结尾,因为对文件的中间没

有加以限制所以用*代替中间部分,*表示任意个数的任意字符

2. 查找root下的隐藏文件和目录

      命令: ls   -d  /root/.*

      运行结果:

解释:-d 只展开一级目录

      /root 目录路径

      因为Linux下以“.”开头的文件是隐藏文件,所以用“.”加上“*”来表示隐藏文件

3. 查找/etc下所有以k开头,以一个小写字母结尾,且中间出现至少一位数字的文件

        命令:ls   -d   /etc/k*[0-9]*[[:lower:]]

        运行结果:

解释:-d 只展开一级目录

      /etc 目录路径

       k表示以k开头,[0-9]表示一个数字,[[:lower:]]表示一个小写字母,因为[:lower:]表示为小写字母,也就是abcdefg...z,所以在[:lower:]外面加

      上[ ]以表示在这写子母中取任意一个,因为只规定了开头和结尾,对中间只要求至少出现一位数字,所以中间用*[0-9]*来表示

因此在命令中我们可以通过结尾处的斜线(/)过滤出文件:

$ ls -F |grep -v /
$ ls -p |grep -v /

或过滤出目录:

$ ls -F |grep /$
$ ls -p |grep /$

 

猜你喜欢

转载自www.cnblogs.com/Spring-Rain/p/12571373.html