linux 命令详解

本文主要内容来自Linux man 手册

命令名称:

ls ( list files / list directory contents )列举目录内容

命令用法:

ls [选项]... [文件]...            []表示可选参数

命令概述:

将文件信息列举出来(默认当前目录),不指定排序方式的情况下,以文件名的方式排序。

命令参数:

-a , --all 全部显示所有文件,包括 . 和 ..
-A , --almost-all 几乎全部显示所有文件,包括隐藏文件(以.开头),但不显示 . 和 ..
--author 作者和 -l 一起用,打印每个文件的作者
-b,--escape 转义方式显示将非图形化字符以C语言转义的方式显示(感觉用处不大)
--block-size=SIZE 在打印文件大小信息前,将大小的范围(单位)设置为 SIZE,例如 '--block-size=10M' 是以10M为单位打印文件大小信息(和其他能显示文件大小的参数一起使用,如 -l)SIZE 是一个整型参数,可选的单位包括 K,M,G,T,P,E,Z,Y(1024次幂)或者 KB,MB,GB,...(1000次幂)
-B,--ignore-backups 不显示备份文件不显示以 ~ 结尾的备份文件。
-c当和 -lt 一起用时,显示修改时间并按修改时间排序;当和 -l 一起用时,显示修改时间但按文件名排序;其他情况,按修改时间排序,最新的在最前。
-C 以列的形式列出项目。
--color[=WHEN]将打印的内容着色,WHEN 可以是 ’always','auto' 或者 'never' (如果WHEN参数缺省,则为默认值)。WHEN,默认情况和 --color=never 的情况下,ls 命令是不会将输出的内容按文件类型标色,只有在终端上使用标准输出(也就是将输出打印到终端)且 --color=auto的情况下,ls 命令才会打印出带颜色的内容。这些颜色的设置在 LS_COLORS 环境变量中,可以用 dircolors 命令去手动设置。
-d,--directory 目录而不是内容列出目录,而不是目录里的内容,如果是当前目录,只列出 '.' 。
-D,--dired dired模式显示一些 Emacs' dired 模式的信息(本人暂时没用过)。
-f不进行任何排序,使能 -aU 参数,失能 --color 参数(不显示颜色)。
-F,--classify 分类将每个项目根据类型做标记(*/=>@| 中的其中一个,详情请看下文)。
--file-type 显示文件类型和 -F 类似,但不会出现'*'标志,* 表示可执行文件。
--format=WORDWORD 为 across 时,相当于 ls -x ,项目将按行排列 (ls 默认按列排列);commas 相当于 -m 参数,项目之间用逗号分隔;horizontal 相当于 -x 参数,效果和 across ( ls -x )相同;long 相当于 -l 参数,长格式显示,即显示详细信息;single-column相当于 -1 参数,单列显示所有项目;verbose 和 long 效果相同,相当于 -l 参数,显示详细信息;vertical 相当于 -C 参数,按列排列所有项目。
--full-time 显示完整的时间和 '-l --time-style=full-iso’ 相同。
-g和 -l 参数类似,但不显示文件的所有者。
--group-directories-first 目录排序优先将目录排在文件前面,可以和 --sort 参数一起使用,但是 --sort=none (相当于 -U参数) 会使这个参数失效。
-G,--no-group 不显示用户组在显示详细信息时,不打印用户组的名字。
-h,--human-readable 显示可读的大小在使用 -l 或 -s 等参数时,打印可读的(易于理解的)文件大小(如 4096 将显示为 4K)。
--si 和 -h 参数类似,但次幂不是1024,而是1000。
-H,--dereference-command-line 遵循命令行上列出的符号链接。(???)
--dereference-command-line-symlink-to-dir遵循每个命令行的指向目录的符号链接。(???)
--hide=PATTERN 隐藏指定项目不列出和 PATTERN 匹配的项目,使用 -a 或 -A 时该参数不生效。
--indicator-sytle=WORD 文件标志的类型WORD 默认为 none,既不添加任何标志,WORD 为 slash 相当于 -p 参数,在目录名后面显示 '/‘;file-type 相当于 --file-type ;classify 相当于 -F 参数。
-i,--inode 索引显示每个文件、目录的索引号。
-I,--ignore=PATTERN不列出和 PATTERN 匹配的项目,不会受 -a 和 -A 影响。
-k,--kibibytes磁盘使用默认为1024字节。(???)
-l长格式显示,显示详细的文件信息。
-L,--dereference显示符号链接的文件信息时,显示链接引用的文件的信息,而不是链接本身。
-m用逗号来分隔所有显示的项目。
-n,--numeric-uid-gid和 -l 参数类似,但不显示用户名和组名,而是UID 和 GID(用户和用户组的ID号)。
-N,--literal 字面的显示原始项目名称(不进行处理,如特殊控制字符)(???)
-o和 -l 参数类似,但不显示用户组信息。
-p,--indicator-style=slash 标识类型-斜杠在目录后面追加 / 标记。
-q,--hide-control-char 隐藏控制字符用 ?替换不可显示的字符。
--show-control-chars 显示控制字符原样显示非图形化字符(默认值,除非程序中运行 'ls',并且在终端输出)。
-Q,--quote-name 引号将项目名用双引号括起来。
--quoting-sytle=WORD应用类型为WORD,可以是 literal、locale、shell、shell-always、shell-escape、shell-escape-always、c、escape。
-r,--reverse 颠倒排序时使用反向排序。
-R,--recursive 递归递归显示子目录,显示子目录的内容,直到没有子目录为止。
-s,--size 显示文件的大小,以块为单位。
-S根据文件大小排序,大的在前。
--sort=WORD根据 WORD 排序,WORD 为 none 时,相当于 -U 参数,不进行排序;size 相当于 -S 参数,按大小排序;time 相当于 -t参数,按修改时间排序;version 相当于 -v 参数,按文本的版本编号自然排序;extension 相当于 -X 参数,按文件扩展名排序。
--time=WORD和 -l 参数一起使用时,显示的时间是 WORD,而不是默认的修改时间:WORD 为 atime ,access 或者 use 相当于 -u 参数,显示访问时间;ctime 或者 status 相当于参数 -c,显示修改时间。
--time-style=STYLE 时间显示样式和 -l 参数一起使用。STYLE 可以为:full-iso,完整显示;long-iso,以 2021-07-11 00:00 的格式显示时间;iso,以 07-11 00:00 的格式显示时间;locale,以 Jan 1 00:00 的格式显示时间;+FORMAT,自定义格式,如 --time-style="+%Y-%m-%d %H:%M" ,该格式和 long-iso显示效果相同。
-t 按照修改时间排序,最新的排在前面。
-T,--tabsize=COLS设定制表宽度,COLS 默认值为8。
-u如果和 -lt 参数一次使用,根据最后访问时间排序并显示详细信息,显示的时间为最后访问时间;如果和 -l 参数一起使用,显示访问时间并按文件名排序;其他情况:按最后访问时间排序,时间最新的排在前面。
-U不进行排序,列举所有文件,目录文件排在后面。
-v根据文本版本号自然排序。
-w,--with=COLS设置输出宽度为 COLS,0表示无限制。
-x项目改为按行排列显示,而不是按列排列。
-X  根据项目的扩展名(格式名/后缀)进行排列。
-Z,--context 上下文显示文件任何安全上下文(???)
-1单列显示所有项目,Avoid '\n' with -q or -b(???)。
--help 显示帮助信息并退出。
--version输出版本信息并退出。

示例:

1. ls

不带任何选项和参数,则打印当前工作路径下的文件内容,排列方式为按列排列,普通文件和目录是按照文件名排序,但一些特殊文件排在后面。

xiaohui@ubuntu:~/work/ls_learn$ ls
1.c  4.c  8.c  a.out  c.c   dir2  dir5  dir8  f.c     Screenshot.png
2.c  6.c  9.c  app.c  d.c   dir3  dir6  dir9  g.c     tar.tar..gz
3.c  7.c  a.c  b.c    dir1  dir4  dir7  e.c   myfifo  z.c
xiaohui@ubuntu:~/work/ls_learn$

ls 命令打印的信息是五颜六色的,那这些颜色代表什么意思呢?

白 色 :普通文件
蓝 色 :目录
绿 色 :可执行文件
红 色 :压缩文件
黄 色 :设备文件
水蓝色 :链接文件

当终端宽度较窄时,按列排列的效果更明显。(以前一直以为它是按行排列的,毕竟图形界面的系统目录图标基本都是按行排列)

xiaohui@ubuntu:~/work/ls_learn$ ls
1.c  a.c    dir3  f.c
2.c  a.out  dir4  g.c
3.c  app.c  dir5  myfifo
4.c  b.c    dir6  Screenshot.png
6.c  c.c    dir7  tar.tar..gz
7.c  d.c    dir8  z.c
8.c  dir1   dir9
9.c  dir2   e.c
xiaohui@ubuntu:~/work/ls_learn$

2. ls -a [目录…]

ls -a 的作用是将指定目录(缺省值为’.’,即当前目录)的所有文件打印出来,包括以 . 开头的隐藏文件及 . (当前目录)和 … (父目录)。

xiaohui@ubuntu:~/work/ls_learn$ ls -a ./
.    .1.txt  3.c  7.c  a.c    b.c  dir1  dir4  dir7  e.c  myfifo          z.c
..   2.c     4.c  8.c  a.out  c.c  dir2  dir5  dir8  f.c  Screenshot.png
1.c  .2.txt  6.c  9.c  app.c  d.c  dir3  dir6  dir9  g.c  tar.tar..gz
xiaohui@ubuntu:~/work/ls_learn$

3. ls -l [目录/文件…]

-l 参数是显示目录的详细信息,包括文件类型、文件权限、子目录个数(或硬链接数)、归属的用户名、归属的用户组名、大小、最后修改时间、文件名。

xiaohui@ubuntu:~/work/ls_learn$ ls -l
total 248
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:11 1.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:11 2.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:11 3.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:16 4.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:16 6.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:11 a.c
-rwxrwxr-x 1 xiaohui xiaohui   8600 7月  12 10:13 a.out
-rw-rw-r-- 1 xiaohui xiaohui     74 7月  12 10:33 app.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:11 b.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:11 c.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:16 d.c
drwxrwxr-x 3 xiaohui xiaohui   4096 7月  12 11:41 dir1
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir2
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir3
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir4
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir5
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir6
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir7
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir8
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:21 dir9
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:16 e.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:16 f.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  12 10:16 g.c
prw-r--r-- 1 root    root         0 7月  12 11:08 myfifo
-rw-rw-r-- 1 xiaohui xiaohui 186519 7月  12 10:57 Screenshot.png
-rw-rw-r-- 1 xiaohui xiaohui  10240 7月  12 10:56 tar.tar..gz
lrwxrwxrwx 1 xiaohui xiaohui      5 7月  12 10:58 z.c -> app.c
xiaohui@ubuntu:~/work/ls_learn$

打印的信息中,第一列是文件的类型,下面是各种类型的对应的标识:

- : 普通文件
d : 目录文件
c : 字符设备
b : 块设备
l : 符号链接(类似Windows系统里的快捷方式)
p : 管道文件
s : 套接字文件

4. ls --block-size=SIZE [目录/文件…]

–block-size=SIZE 的作用是修改文件大小的单位,和-l或-s参数一起使用。

xiaohui@ubuntu:~/work/ls_learn$ ls -s --block-size=10K
total 250 1.c   0 6.c     0 b.c    1 dir2   1 dir6   0 e.c     19 Screenshot.png0 2.c   0 a.c     0 c.c    1 dir3   1 dir7   0 f.c      2 tar.tar..gz0 3.c   2 a.out   0 d.c    1 dir4   1 dir8   0 g.c      0 z.c0 4.c   1 app.c   1 dir1   1 dir5   1 dir9   0 myfifo
xiaohui@ubuntu:~/work/ls_learn$ ls -s --block-size=1
total 2539520 1.c   12288 a.out    4096 dir2    4096 dir8    188416 Screenshot.png0 2.c    4096 app.c    4096 dir3    4096 dir9     12288 tar.tar..gz0 3.c       0 b.c      4096 dir4       0 e.c          0 z.c0 4.c       0 c.c      4096 dir5       0 f.c0 6.c       0 d.c      4096 dir6       0 g.c0 a.c    4096 dir1     4096 dir7       0 myfifo
xiaohui@ubuntu:~/work/ls_learn$

5. ls -B [目录/文件…]

将备份文件(带~后缀的文件)隐藏。

xiaohui@ubuntu:~/work/cp_learn$ ls
dir1  dir3      ln_test.c  test.c.bak     test.c.bak.~1~
dir2  dir_dest  test.c     test.c.bak@_@
xiaohui@ubuntu:~/work/cp_learn$ ls -B ./
dir1  dir2  dir3  dir_dest  ln_test.c  test.c  test.c.bak  test.c.bak@_@
xiaohui@ubuntu:~/work/cp_learn$

6. ls -c [目录/文件…]

如果显示时间,则显示文件的修改时间(默认也是显示修改时间)。

xiaohui@ubuntu:~/work/ls_learn$ ls -l 1.c
-rw-rw-r-- 1 xiaohui xiaohui 10 7月  14 09:10 1.c
xiaohui@ubuntu:~/work/ls_learn$ ls -l 1.c 2.c 3.c
-rw-rw-r-- 1 xiaohui xiaohui 10 7月  14 09:10 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:10 2.c
-rw-rw-r-- 1 xiaohui xiaohui  0 7月  14 09:03 3.c
xiaohui@ubuntu:~/work/ls_learn$ cat 1.c && date
I am 1.c2021年 07月 14日 星期三 09:15:19 CST
xiaohui@ubuntu:~/work/ls_learn$ echo "I am 3.c" >> 3.c
xiaohui@ubuntu:~/work/ls_learn$ ls -l 1.c 2.c 3.c
-rw-rw-r-- 1 xiaohui xiaohui 10 7月  14 09:10 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:10 2.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:15 3.c
xiaohui@ubuntu:~/work/ls_learn$

7. ls --color[=WHEN] [目录/文件…]

ls --color=never 可以让ls不打印颜色。

8. ls -d [目录…]

这个选项只显示目录的信息。

xiaohui@ubuntu:~/work/ls_learn$ ls -ld
drwxrwxr-x 11 xiaohui xiaohui 4096 7月  14 09:27 .
xiaohui@ubuntu:~/work/ls_learn$ ls -l -d
drwxrwxr-x 11 xiaohui xiaohui 4096 7月  14 09:27 .
xiaohui@ubuntu:~/work/ls_learn$ ls /dev/ -dl
drwxr-xr-x 18 root root 4000 7月  14 08:44 /dev/
xiaohui@ubuntu:~/work/ls_learn$

9. ls -F [目录/文件…]

通过添加后缀符号的方式给文件分类。 *:可执行文件,/:目录文件,|:管道文件,@:链接文件,=:套接字,>:进程间通信设备。

xiaohui@ubuntu:~/work/ls_learn$ ls -F
1.c  4.c  a.c     b.c  dir1/  dir4/  dir7/  e.c  myfifo|         z.c@
2.c  5.c  a.out*  c.c  dir2/  dir5/  dir8/  f.c  Screenshot.png
3.c  6.c  app.c   d.c  dir3/  dir6/  dir9/  g.c  tar.tar..gz
xiaohui@ubuntu:~/work/ls_learn$

10. ls --format=WORD [目录/文件…]

WORD 为 across 或 horizontal 时,相当于 ls -x ,所以显示的项目将按行排列。

xiaohui@ubuntu:~/work/ls_learn$ ls -x
1.c   2.c  3.c   4.c   5.c     6.c             a.c          a.out  app.c  b.c
c.c   d.c  dir1  dir2  dir3    dir4            dir5         dir6   dir7   dir8
dir9  e.c  f.c   g.c   myfifo  Screenshot.png  tar.tar..gz  z.c
xiaohui@ubuntu:~/work/ls_learn$

WORD 为 commas 时,相当于 -m 参数,项目之间用逗号分隔。

xiaohui@ubuntu:~/work/ls_learn$ ls --format=commas
1.c, 2.c, 3.c, 4.c, 5.c, 6.c, a.c, a.out, app.c, b.c, c.c, d.c, dir1, dir2,
dir3, dir4, dir5, dir6, dir7, dir8, dir9, e.c, f.c, g.c, myfifo, Screenshot.png,
tar.tar..gz, z.c
xiaohui@ubuntu:~/work/ls_learn$

WORD 为 long 或 verbose 时,相当于 -l 参数。
WORD 为 single-column 相当于 -1 参数,单列显示所有项目。(=后面的参数可以不用填全称)

xiaohui@ubuntu:~/work/ls_learn$ ls --format=s *.c
1.c
2.c
3.c
4.c
5.c
6.c
a.c
app.c
b.c
c.c
d.c
e.c
f.c
g.c
z.c
xiaohui@ubuntu:~/work/ls_learn$

WORD 为 vertical 相当于 -C 参数,按列排列所有项目。

xiaohui@ubuntu:~/work/ls_learn$ ls --format=vert
1.c  4.c  a.c    b.c  dir1  dir4  dir7  e.c  myfifo          z.c
2.c  5.c  a.out  c.c  dir2  dir5  dir8  f.c  Screenshot.png
3.c  6.c  app.c  d.c  dir3  dir6  dir9  g.c  tar.tar..gz
xiaohui@ubuntu:~/work/ls_learn$

11. ls -h [目录/文件…]

显示文件大小时使用最佳单位,增强可读性。

xiaohui@ubuntu:~/work/ls_learn$ ls -s -h
total 260K
4.0K 1.c     0 6.c       0 c.c   4.0K dir4  4.0K dir9    184K Screenshot.png
4.0K 2.c     0 a.c       0 d.c   4.0K dir5     0 e.c      12K tar.tar..gz
4.0K 3.c   12K a.out  4.0K dir1  4.0K dir6     0 f.c        0 z.c0 4.c  4.0K app.c  4.0K dir2  4.0K dir7     0 g.c0 5.c     0 b.c    4.0K dir3  4.0K dir8     0 myfifo
xiaohui@ubuntu:~/work/ls_learn$

12. ls -i [目录/文件…]

显示文件索引号,每个文件在Linux系统中都是唯一的索引号,硬链接的索引号相同。

xiaohui@ubuntu:~/work/ls_learn$ cp -l 1.c 1.c.ln
xiaohui@ubuntu:~/work/ls_learn$ ls -i
419804 1.c     419767 6.c    419771 d.c   419763 dir6  419774 g.c
419804 1.c.ln  419751 a.c    419758 dir1  419764 dir7  419783 myfifo
419748 2.c     419756 a.out  419759 dir2  419765 dir8  295320 Screenshot.png
419749 3.c     419775 app.c  419760 dir3  419766 dir9  419757 tar.tar..gz
419750 4.c     419752 b.c    419761 dir4  419772 e.c   419779 z.c
419747 5.c     419753 c.c    419762 dir5  419773 f.c
xiaohui@ubuntu:~/work/ls_learn$

1.c 和 1.c.ln 是硬链接关系,他们的索引号相同。

13. ls -L [目录/文件…]

对符号链接文件进行引用,即显示链接指向的文件信息。

xiaohui@ubuntu:~/work/ls_learn$ ls z.c -l
lrwxrwxrwx 1 xiaohui xiaohui 5 7月  12 10:58 z.c -> app.c
xiaohui@ubuntu:~/work/ls_learn$ ls -L z.c app.c -l
-rw-rw-r-- 1 xiaohui xiaohui 74 7月  14 09:03 app.c
-rw-rw-r-- 1 xiaohui xiaohui 74 7月  14 09:03 z.c
xiaohui@ubuntu:~/work/ls_learn$

14. ls -p [目录/文件…]

在目录后面添加 /

xiaohui@ubuntu:~/work/ls_learn$ ls -p
1.c     4.c  a.out  d.c    dir4/  dir8/  g.c             z.c
1.c.ln  5.c  app.c  dir1/  dir5/  dir9/  myfifo
2.c     6.c  b.c    dir2/  dir6/  e.c    Screenshot.png
3.c     a.c  c.c    dir3/  dir7/  f.c    tar.tar..gz
xiaohui@ubuntu:~/work/ls_learn$

15. ls -Q [目录/文件…]

用双引号将所有项目括起来。

xiaohui@ubuntu:~/work/ls_learn$ ls -Q
"1.c"     "4.c"  "a.out"  "d.c"   "dir4"  "dir8"  "g.c"             "z.c"
"1.c.ln"  "5.c"  "app.c"  "dir1"  "dir5"  "dir9"  "myfifo"
"2.c"     "6.c"  "b.c"    "dir2"  "dir6"  "e.c"   "Screenshot.png"
"3.c"     "a.c"  "c.c"    "dir3"  "dir7"  "f.c"   "tar.tar..gz"
xiaohui@ubuntu:~/work/ls_learn$

16. ls -r [目录/文件…]

将显示顺序颠倒。

xiaohui@ubuntu:~/work/ls_learn$ ls *.c
1.c  2.c  3.c  4.c  5.c  6.c  a.c  app.c  b.c  c.c  d.c  e.c  f.c  g.c  z.c
xiaohui@ubuntu:~/work/ls_learn$ ls -r *.c
z.c  g.c  f.c  e.c  d.c  c.c  b.c  app.c  a.c  6.c  5.c  4.c  3.c  2.c  1.c
xiaohui@ubuntu:~/work/ls_learn$

17. ls -R [目录/文件…]

递归显示,类似 tree 命令。

xiaohui@ubuntu:~/work/ls_learn$ ls -R dir1/
dir1/:
c_dir1  dir1dir1/c_dir1:
cc_dir1dir1/c_dir1/cc_dir1:
ccc_dir1dir1/c_dir1/cc_dir1/ccc_dir1:
xiaohui@ubuntu:~/work/ls_learn$

18. ls -s [目录/文件…]

显示文件的大小,默认单位1K。

xiaohui@ubuntu:~/work/ls_learn$ ls -s
total 2644 1.c       0 5.c      0 b.c     4 dir3    4 dir8    0 myfifo4 1.c.ln    0 6.c      0 c.c     4 dir4    4 dir9  184 Screenshot.png4 2.c       0 a.c      0 d.c     4 dir5    0 e.c    12 tar.tar..gz4 3.c      12 a.out    4 dir1    4 dir6    0 f.c     0 z.c0 4.c       4 app.c    4 dir2    4 dir7    0 g.c
xiaohui@ubuntu:~/work/ls_learn$ ls --block-size=1k -s
total 2644 1.c       0 5.c      0 b.c     4 dir3    4 dir8    0 myfifo4 1.c.ln    0 6.c      0 c.c     4 dir4    4 dir9  184 Screenshot.png4 2.c       0 a.c      0 d.c     4 dir5    0 e.c    12 tar.tar..gz4 3.c      12 a.out    4 dir1    4 dir6    0 f.c     0 z.c0 4.c       4 app.c    4 dir2    4 dir7    0 g.c
xiaohui@ubuntu:~/work/ls_learn$

19. ls -S [目录/文件…]

根据文件大小排序,大的在前。

xiaohui@ubuntu:~/work/ls_learn$ ls -S -s
total 264
184 Screenshot.png    4 dir3    4 dir8      4 2.c    0 6.c    0 e.c12 tar.tar..gz       4 dir4    4 dir9      4 3.c    0 a.c    0 f.c12 a.out             4 dir5    4 app.c     0 z.c    0 b.c    0 g.c4 dir1              4 dir6    4 1.c       0 4.c    0 c.c    0 myfifo4 dir2              4 dir7    4 1.c.ln    0 5.c    0 d.c
xiaohui@ubuntu:~/work/ls_learn$

20. ls --sort=WORD [目录/文件…]

排序,WORD 为 none 时,相当于 -U 参数,不进行排序。WORD 为 size 相当于 -S 参数,按大小排序。
WORD 为 time 相当于 -t参数,按修改时间排序。

xiaohui@ubuntu:~/work/ls_learn$ ls --sort=time -l
total 264
-rwxrwxr-x 1 xiaohui xiaohui   8600 7月  14 09:48 a.out
-rw-rw-r-- 1 xiaohui xiaohui      9 7月  14 09:15 3.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:11 5.c
-rw-rw-r-- 1 xiaohui xiaohui      9 7月  14 09:10 2.c
-rw-rw-r-- 2 xiaohui xiaohui     10 7月  14 09:10 1.c
-rw-rw-r-- 2 xiaohui xiaohui     10 7月  14 09:10 1.c.ln
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 4.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 6.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 a.c
-rw-rw-r-- 1 xiaohui xiaohui     74 7月  14 09:03 app.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 b.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 c.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 d.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 e.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 f.c
-rw-rw-r-- 1 xiaohui xiaohui      0 7月  14 09:03 g.c
drwxrwxr-x 3 xiaohui xiaohui   4096 7月  12 11:41 dir1
prw-r--r-- 1 root    root         0 7月  12 11:08 myfifo
lrwxrwxrwx 1 xiaohui xiaohui      5 7月  12 10:58 z.c -> app.c
-rw-rw-r-- 1 xiaohui xiaohui 186519 7月  12 10:57 Screenshot.png
-rw-rw-r-- 1 xiaohui xiaohui  10240 7月  12 10:56 tar.tar..gz
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:21 dir9
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir8
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir7
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir6
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir5
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir4
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir3
drwxrwxr-x 2 xiaohui xiaohui   4096 7月  12 10:15 dir2
xiaohui@ubuntu:~/work/ls_learn$

WORD 为 version 相当于 -v 参数,按文本的版本编号自然排序,其实按名字排序就行了。

xiaohui@ubuntu:~/work/cp_learn$ ls -l test.c.bak* --sort=version
-rw-rw-r-- 1 xiaohui xiaohui 29 7月  14 11:34 test.c.bak
-rw-rw-r-- 1 xiaohui xiaohui 36 7月  14 11:36 test.c.bak.~1~
-rw-rw-r-- 1 xiaohui xiaohui 29 7月  13 23:17 test.c.bak.~2~
-rw-rw-r-- 1 xiaohui xiaohui 29 7月  14 11:34 test.c.bak.~3~
-rw-rw-r-- 1 xiaohui xiaohui 29 7月  14 11:34 test.c.bak.~4~
-rw-rw-r-- 1 xiaohui xiaohui 29 7月  13 23:16 test.c.bak@_@
xiaohui@ubuntu:~/work/cp_learn$

WORD 为 extension 相当于 -X 参数,按文件扩展名排序。

xiaohui@ubuntu:~/work/ls_learn/dir2$ ls
1.a  1.b  1.c  2.d  3.c
xiaohui@ubuntu:~/work/ls_learn/dir2$ ls --sort=ext
1.a  1.b  1.c  3.c  2.d
xiaohui@ubuntu:~/work/ls_learn/dir2$ ls -X
1.a  1.b  1.c  3.c  2.d
xiaohui@ubuntu:~/work/ls_learn/dir2$ ls

21. ls --time=WORD [目录/文件…]

显示时间时(ls -l),根据 WORD,可以显示访问时间和修改时间。WORD 为 atime 、access 或者 use 相当于 -u 参数,显示访问时间。

xiaohui@ubuntu:~/work/ls_learn$ ls -l 1.c 2.c 3.c --time=use
-rw-rw-r-- 2 xiaohui xiaohui 10 7月  14 11:52 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:03 2.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:11 3.c
xiaohui@ubuntu:~/work/ls_learn$ stat 1.cFile: '1.c'Size: 10          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 419804      Links: 2
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ xiaohui)   Gid: ( 1000/ xiaohui)
Access: 2021-07-14 11:52:19.476628204 +0800
Modify: 2021-07-14 09:10:43.470470564 +0800
Change: 2021-07-14 11:13:42.584804629 +0800Birth: -
xiaohui@ubuntu:~/work/ls_learn$

WORD 为 ctime 或者 status 相当于参数 -c,显示修改时间。

xiaohui@ubuntu:~/work/ls_learn$ ls --time=ctime -l 1.c 2.c 3.c
-rw-rw-r-- 2 xiaohui xiaohui 10 7月  14 11:13 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:10 2.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:15 3.c
xiaohui@ubuntu:~/work/ls_learn$ stat 1.cFile: '1.c'Size: 10          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 419804      Links: 2
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ xiaohui)   Gid: ( 1000/ xiaohui)
Access: 2021-07-14 11:52:19.476628204 +0800
Modify: 2021-07-14 09:10:43.470470564 +0800
Change: 2021-07-14 11:13:42.584804629 +0800Birth: -
xiaohui@ubuntu:~/work/ls_learn$

22. ls --time-style=STYLE [目录/文件…]

修改时间显示的样式,和 -l 参数一起使用。STYLE 为 full-iso 时,完整显示格式。

xiaohui@ubuntu:~/work/ls_learn$ ls -l --time-style=ful 1.c 2.c
-rw-rw-r-- 2 xiaohui xiaohui 10 2021-07-14 09:10:43.470470564 +0800 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 2021-07-14 09:10:59.562501641 +0800 2.c
xiaohui@ubuntu:~/work/ls_learn$

STYLE 为 long-iso 时,以 2021-07-11 00:00 的格式显示时间。

xiaohui@ubuntu:~/work/ls_learn$ ls -l --time-style=lon 1.c 2.c
-rw-rw-r-- 2 xiaohui xiaohui 10 2021-07-14 09:10 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 2021-07-14 09:10 2.c
xiaohui@ubuntu:~/work/ls_learn$

STYLE 为 iso 时,以 07-11 00:00 的格式显示时间。

xiaohui@ubuntu:~/work/ls_learn$ ls -l --time-style=iso 1.c 2.c
-rw-rw-r-- 2 xiaohui xiaohui 10 07-14 09:10 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 07-14 09:10 2.c
xiaohui@ubuntu:~/work/ls_learn$

STYLE 为 locale 时,以 Jan 1 00:00 的格式显示时间。

xiaohui@ubuntu:~/work/ls_learn$ ls -l --time-style=loc 1.c 2.c
-rw-rw-r-- 2 xiaohui xiaohui 10 7月  14 09:10 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:10 2.c
xiaohui@ubuntu:~/work/ls_learn$

STYLE 为 +FORMAT 时,自定义格式(man date 可以查看所有格式)

xiaohui@ubuntu:~/work/ls_learn$ ls -l --time-style="+%Y-%m-%d %H:%M:%S" 1.c 2.c
-rw-rw-r-- 2 xiaohui xiaohui 10 2021-07-14 09:10:43 1.c
-rw-rw-r-- 1 xiaohui xiaohui  9 2021-07-14 09:10:59 2.c
xiaohui@ubuntu:~/work/ls_learn$

23. ls -t [目录/文件…]

按照修改时间排序,最新的排在前面。

xiaohui@ubuntu:~/work/ls_learn$ ls -t -l 1.c 2.c 3.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:15 3.c
-rw-rw-r-- 1 xiaohui xiaohui  9 7月  14 09:10 2.c
-rw-rw-r-- 2 xiaohui xiaohui 10 7月  14 09:10 1.c
xiaohui@ubuntu:~/work/ls_learn$

man手册

以下为 ls 的参考手册原文:

LS(1)                            User Commands                           LS(1)NAMEls - list directory contentsSYNOPSISls [OPTION]... [FILE]...DESCRIPTIONList  information  about  the FILEs (the current directory by default).Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐fied.Mandatory  arguments  to  long  options are mandatory for short optionstoo.-a, --alldo not ignore entries starting with .-A, --almost-alldo not list implied . and ..--authorwith -l, print the author of each file-b, --escapeprint C-style escapes for nongraphic characters--block-size=SIZEscale sizes by SIZE before printing them; e.g., '--block-size=M'prints sizes in units of 1,048,576 bytes; see SIZE format below-B, --ignore-backupsdo not list implied entries ending with ~-c     with -lt: sort by, and show, ctime (time of last modification offile status information); with -l: show ctime and sort by  name;otherwise: sort by ctime, newest first-C     list entries by columns--color[=WHEN]colorize  the output; WHEN can be 'always' (default if omitted),'auto', or 'never'; more info below-d, --directorylist directories themselves, not their contents-D, --diredgenerate output designed for Emacs' dired mode-f     do not sort, enable -aU, disable -ls --color-F, --classifyappend indicator (one of */=>@|) to entries--file-typelikewise, except do not append '*'--format=WORDacross -x, commas -m, horizontal -x, long -l, single-column  -1,verbose -l, vertical -C--full-timelike -l --time-style=full-iso-g     like -l, but do not list owner--group-directories-firstgroup directories before files;can   be  augmented  with  a  --sort  option,  but  any  use  of--sort=none (-U) disables grouping-G, --no-groupin a long listing, don't print group names-h, --human-readablewith -l and/or -s, print human readable sizes (e.g., 1K 234M 2G)--si   likewise, but use powers of 1000 not 1024-H, --dereference-command-linefollow symbolic links listed on the command line--dereference-command-line-symlink-to-dirfollow each command line symbolic linkthat points to a directory--hide=PATTERNdo not list implied entries matching shell  PATTERN  (overriddenby -a or -A)--indicator-style=WORDappend indicator with style WORD to entry names: none (default),slash (-p), file-type (--file-type), classify (-F)-i, --inodeprint the index number of each file-I, --ignore=PATTERNdo not list implied entries matching shell PATTERN-k, --kibibytesdefault to 1024-byte blocks for disk usage-l     use a long listing format-L, --dereferencewhen showing file information for a symbolic link, show informa‐tion  for  the file the link references rather than for the linkitself-m     fill width with a comma separated list of entries-n, --numeric-uid-gidlike -l, but list numeric user and group IDs-N, --literalprint raw entry names (don't treat e.g. control characters  spe‐cially)-o     like -l, but do not list group information-p, --indicator-style=slashappend / indicator to directories-q, --hide-control-charsprint ? instead of nongraphic characters--show-control-charsshow nongraphic characters as-is (the default, unless program is'ls' and output is a terminal)-Q, --quote-nameenclose entry names in double quotes--quoting-style=WORDuse quoting style WORD for entry names: literal, locale,  shell,shell-always, shell-escape, shell-escape-always, c, escape-r, --reversereverse order while sorting-R, --recursivelist subdirectories recursively-s, --sizeprint the allocated size of each file, in blocks-S     sort by file size, largest first--sort=WORDsort  by  WORD instead of name: none (-U), size (-S), time (-t),version (-v), extension (-X)--time=WORDwith -l, show time as WORD instead of default modification time:atime  or  access  or  use  (-u); ctime or status (-c); also usespecified time as sort key if --sort=time (newest first)--time-style=STYLEwith -l, show times using style STYLE: full-iso, long-iso,  iso,locale,  or  +FORMAT;  FORMAT  is interpreted like in 'date'; ifFORMAT  is  FORMAT1<newline>FORMAT2,  then  FORMAT1  applies  tonon-recent  files  and FORMAT2 to recent files; if STYLE is pre‐fixed with 'posix-', STYLE takes effect only outside  the  POSIXlocale-t     sort by modification time, newest first-T, --tabsize=COLSassume tab stops at each COLS instead of 8-u     with  -lt:  sort by, and show, access time; with -l: show accesstime and sort by name; otherwise: sort by  access  time,  newestfirst-U     do not sort; list entries in directory order-v     natural sort of (version) numbers within text-w, --width=COLSset output width to COLS.  0 means no limit-x     list entries by lines instead of by columns-X     sort alphabetically by entry extension-Z, --contextprint any security context of each file-1     list one file per line.  Avoid '\n' with -q or -b--help display this help and exit--versionoutput version information and exitThe  SIZE  argument  is  an  integer and optional unit (example: 10K is10*1024).  Units are K,M,G,T,P,E,Z,Y  (powers  of  1024)  or  KB,MB,...(powers of 1000).Using  color  to distinguish file types is disabled both by default andwith --color=never.  With --color=auto, ls emits color codes only  whenstandard  output is connected to a terminal.  The LS_COLORS environmentvariable can change the settings.  Use the dircolors command to set it.Exit status:0      if OK,1      if minor problems (e.g., cannot access subdirectory),2      if serious trouble (e.g., cannot access command-line argument).AUTHORWritten by Richard M. Stallman and David MacKenzie.REPORTING BUGSGNU coreutils online help: <http://www.gnu.org/software/coreutils/>Report ls translation bugs to <http://translationproject.org/team/>COPYRIGHTCopyright © 2016 Free Software Foundation, Inc.   License  GPLv3+:  GNUGPL version 3 or later <http://gnu.org/licenses/gpl.html>.This  is  free  software:  you  are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.SEE ALSOFull documentation at: <http://www.gnu.org/software/coreutils/ls>or available locally via: info '(coreutils) ls invocation'GNU coreutils 8.25               February 2017                           LS(1)

Linux命令详解之 ls相关推荐

  1. linux命令详解之ls命令

    ls命令概述 ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似.当执行ls命令时,默认显示的只有非隐藏文件的文件名.以文件名进行排序及文件名代表的颜色显示.当不加参数时,默认列 ...

  2. c linux time微秒_学习linux,看这篇1.5w多字的linux命令详解(6小时讲明白Linux)

    用心分享,共同成长 没有什么比每天进步一点点更重要了 本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍.命令参数格式.命令参数.命令常用参数示例.由于linux命令较多,我还特意选了 ...

  3. linux下载命令 scp,linux命令详解之scp命令

    作用 scp命令常用于linux之间复制文件和目录. scp是secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 格式 从本地复制到远程 复制文件 sc ...

  4. Linux命令详解之 mv

    linux 命令详解 本文主要内容来自Linux man 手册 命令名称: mv(move)移动/重命名文件 命令用法: mv [选项]... [-T] 源文件 目标文件 mv [选项]... 源文件 ...

  5. linux命令详解--eval

    linux命令详解--eval shell中的eval 功能说明:重新运算求出参数的内容. 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参 ...

  6. Linux命令详解之 touch

    linux 命令详解 本文主要内容来自Linux man 手册 命令名称: touch 改变文件时间戳(timestamps) 命令用法: touch [选项]... 文件... []表示可选参数 命 ...

  7. 《Linux命令详解手册》——Linux畅销书作家又一力作

    关注IT,更要关心IT人,让系统管理员以及程序员工作得更加轻松和快乐.鉴于此, 图灵公司引进了国外知名出版社John Wiley and Sons出版的Fedora Linux Toolbox: 10 ...

  8. linux中date使用方法,linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例)...

    linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例) 发布于 2016-02-07 15:58:40 | 108 次阅读 | 评论: 0 | 来源: 网友投递 LinuxLinux是一 ...

  9. RAR for Linux 命令详解

    RAR for Linux 命令详解 用法:  rar <命令>-<开关 1> -<开关 N> <压缩文件> <文件...> <@列表 ...

最新文章

  1. MEDC2007北京游记 - WindowsMobile Ophone
  2. 2021下半年软考各省准考证打印时间
  3. 三位数除以两位数怎么算竖式_青岛版三年级上册数学5.6三位数除以一位数(最高位商后有余数)微课知识点精讲+练习...
  4. UVA - 512 ​​​​​​​Spreadsheet Tracking
  5. 实测java 与php运行速度比较
  6. WF不是工作流(后续)
  7. php中求10递归算法,php递归算法
  8. 华为2021届实习面试(技术面+主管面)
  9. php重构求圆柱圆锥的体积,六年级数学下册2.8 圆锥的体积教案 (新版)苏教版...
  10. 想哭的鱼最新QQ伤感日志发布:你不该,不相信我
  11. 二进制部署Kubernetes v1.13.4 HA可选 1
  12. vscode配置python环境以及使用json文件配置默认解释器、代码自动保存、pydesigner、kite
  13. 鸿蒙应用开发:实现简单的媒体播放器
  14. 向左还是向右,网约车聚合平台还是高精度地图数据收集站
  15. (转) 咖啡猫的至理名言
  16. 机关里看似讨巧实则毁人设的8种行为
  17. 网页版连连看(JS jQuery)
  18. 选择粘贴性无html,用好Office的选择性粘贴
  19. 国防科技大学计算机考纲,国防科技大学2022年硕士研究生考试大纲-F1007雷达原理...
  20. 乾隆会判阿尔法狗死刑吗 ——浅谈当前人工智能的技术进化

热门文章

  1. 85. 如何用 OPA5 编写测试用例来测试用户输入文本的功能
  2. 私有云计算机械硬盘还是固态硬盘,硬盘寿命有多久?机械硬盘比固态硬盘更长寿吗?...
  3. ubuntu安装java_如何在Ubuntu系统上安装Java
  4. 深度学习之openvino预训练模型测试(车牌识别)
  5. 激光SLAM系统Fast LOAM (Lidar Odometry And Mapping)源码解析
  6. Oracle 存储过程详解(上)
  7. 计算机手动配置信息,手动配置 IPv6
  8. 微信小程序input禁止输入特殊表情符号与空格
  9. The Lost House POJ - 2057(树形dp+贪心 (双线最优子结构问题))
  10. 论文笔记:Show, Control and Tell:A Framework for Generating Controllable and Grounded Captions