ls 命令在linux系统中是使用频率最频繁的几个命令之一,直接使用不带目录名,是默认显示当前目录的文件及子目录名称,ls加指定目录名,则可以查看指定目录下的文件及子目录名称,ls不仅可以查看目录下有哪些文件和子目录,还可以通过指定参数还可以查看这些文件的大小、权限、以及修改日期等,在日常工作中使用得很多。
ls - list directory contents
命令格式
ls [option] [directory]
常用参数
-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 列出文件和目录名称时不予排序。
--block-size=<区块大小> 指定存放文件的区块大小。
--full-time 列出完整的日期与时间。
--help 在线帮助。
--version 显示版本信息。
命令实例:
实例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执行。
第二个字段:
文件硬链接数和目录的子目录数
第三个字段:
文件所属者
第四个字段:
文件所属组
第五个字段:
文件大小
第六个字段:
文件最后一次修改月份
第七个字段:
文件最后一次修改日期
第八个字段:
文件最后一次修改时间
第九个字段:
文件名,如果是一个链接文件,会有一个>指向他链接的源文件