ls 命令在linux系统中是使用频率最频繁的几个命令之一,直接使用不带目录名,是默认显示当前目录的文件及子目录名称,ls加指定目录名,则可以查看指定目录下的文件及子目录名称,ls不仅可以查看目录下有哪些文件和子目录,还可以通过指定参数还可以查看这些文件的大小、权限、以及修改日期等,在日常工作中使用得很多。


ls - list directory contents


  1. 命令格式

    ls [option] [directory]

  2. 常用参数

    -a或--all: 列出目录下的所有文件,包括.和..以及的隐藏文件。

    -A或--almost-all: 等效-a,但不列出.(.表示当前目录)和..(..表示上级目录)目录。

    -1: 每列仅显示一个文件或者目录。

    -c: 配合-lt参数使用,ls -clt directory,根据ctime(最后修改时间)排序并显示ctime

    -d或--directory: 仅显示名称信息,而不是显示目录下的文件,通常配合-l使用,ls -ld directory。

    -g: 等效-l,但不显示文件所属者。

    -G或--no-group:等效-l,但不显示文件所属组。

    -f: 对显示的文件不进行排序,对参数"aU"生效,对参数"lst"失效。

    -F或--classify   在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。

    -h: 用"K","M","G"来显示文件大小。

    --si: 此参数效果和"-h"类似,但计算单位是1000Bytes而非1024Bytes。

    -H: 使用命令列中的符号链接指示的真正目的地。

    -i或--inode: 显示文件和目录的inode编号。

    -k或--kilobytes: 等效–block-size=1K,将k字节的单位大小显示文件。

    -l: 使用详细的格式显示文件或目录信息,除了文件名,还将文件大小、权限、所属、及ctime展示出来。

    -m: 使用","分隔使用的文件和目录。

    -o: 等同于-G

    -n或--numeric-uid-gid   以用户识别码和群组识别码替代其名称。

    -N或--literal   直接列出文件和目录名称,包括控制字符。

    -r或--reverse   反向排序。

    -R或--recursive   递归处理,将指定目录下的所有文件及子目录一并显示。

    -s或--size   显示文件和目录的大小,以区块为单位。

    -S   用文件和目录的大小排序。

    -t   用文件和目录的更改时间排序。

    -u   以最后存取时间排序,显示文件和目录。

    -U   列出文件和目录名称时不予排序。

  3. --block-size=<区块大小>   指定存放文件的区块大小。

    --full-time   列出完整的日期与时间。

    --help   在线帮助。

    --version   显示版本信息。

  4. 命令实例:

    实例1:列出/root目录下所有文件及子目录的详细信息。

    命令:

ls -la /root

  命令输出:

[root@oldboylinux ~]# ls -la /root
total 116
dr-xr-x---.  7 root root  4096 Jun 29 02:38 .
dr-xr-xr-x. 25 root root  4096 Jun 29 18:03 ..
-rw-------.  1 root root  1234 Jun 23 22:02 anaconda-ks.cfg
drwxr-xr-x.  2 root root  4096 Jun 29 02:33 backup
-rw-------.  1 root root  2736 Jun 29 02:10 .bash_history
-rw-r--r--.  1 root root    18 May 20  2009 .bash_logout
-rw-r--r--.  1 root root   176 May 20  2009 .bash_profile
-rw-r--r--.  1 root root   176 Sep 23  2004 .bashrc
-rw-r--r--.  1 root root   100 Sep 23  2004 .cshrc
drwxr-xr-x.  3 root root  4096 Jun 29 02:27 data
drwxr-xr-x.  3 root root  4096 Jun 23 23:01 .emacs.d
-rw-r--r--.  1 root root    14 Jun 29 00:29 ett.txt
-rw-r--r--.  1 root root 34961 Jun 23 22:02 install.log
-rw-r--r--.  1 root root  7346 Jun 23 21:59 install.log.syslog
-rw-------.  1 root root    48 Jun 28 23:47 .lesshst
drwxr-xr-x.  8 root root  4096 Jun 29 02:38 mkdirtest
-rw-r--r--.  1 root root    18 Jun 28 08:16 oldboy.txt
-rw-r--r--.  1 root root   129 Dec  4  2004 .tcshrc
drwxrwxrwx.  2 root root  4096 Jun 29 02:30 test
[root@oldboylinux ~]#

  实例2:列出/root目录所有的问题,并按最后修改时间排序

  命令:

ls -lt /root

  命令输出:

[root@oldboylinux ~]# ls -lt /root
total 76
drwxr-xr-x. 8 root root  4096 Jun 29 02:38 mkdirtest
drwxr-xr-x. 2 root root  4096 Jun 29 02:33 backup
drwxrwxrwx. 2 root root  4096 Jun 29 02:30 test
drwxr-xr-x. 3 root root  4096 Jun 29 02:27 data
-rw-r--r--. 1 root root    14 Jun 29 00:29 ett.txt
-rw-r--r--. 1 root root    18 Jun 28 08:16 oldboy.txt
-rw-------. 1 root root  1234 Jun 23 22:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 34961 Jun 23 22:02 install.log
-rw-r--r--. 1 root root  7346 Jun 23 21:59 install.log.syslog
[root@oldboylinux ~]#

 实例3:只列子目录

  命令

ls -F /root | grep /$
ls -l /root | grep "^d"
# /$   表示以/结尾

  命令输出:

[root@oldboylinux ~]# ls -F  /root | grep /$ 
backup/
data/
mkdirtest/
test/
[root@oldboylinux ~]#

 实例4:将/root目录下所有的文件详细信息列出来

   命令:

ls -lR /root


用ls -l查看一个目录会得到一个9个字段的列表

[root@oldboylinux home]# ls -l
total 12
-rw-r--r--. 1 root   root     15 Jun 30 07:36 1.txt
-rw-r--r--. 1 root   root     15 Jun 30 07:36 2.txt
lrwxrwxrwx. 1 root   root      5 Jun 30 07:36 3.txt -> 1.txt
drwx------. 4 oldboy oldboy 4096 Jun 30 04:06 oldboy
[root@oldboylinux home]#

第一行显示信息:total(总的文件大小),这个数值是改目录下所有文件和目录大小(每行的第5个字段)的总和,也就是改目录的大小


第一个字段:文件属性字段

文件属性字段由10个部分组成,第一个位如果是,'-'表示为文件,‘-d’表示为目录,‘-l’表示为链接文件,第2-4位表示所属者对文件操作权限,第5-7位表示所属组用户对文件操作权限,第8-10位表示其他用户对文件的操作权限,r表示读取,w写入,x执行。


第二个字段:

文件硬链接数和目录的子目录数


第三个字段:

文件所属者


第四个字段:

文件所属组


第五个字段:

文件大小


第六个字段:

文件最后一次修改月份


第七个字段:

文件最后一次修改日期


第八个字段:

文件最后一次修改时间


第九个字段:

文件名,如果是一个链接文件,会有一个>指向他链接的源文件