选项 说明
-a, --all 列出所有条目,包括以点.开头的条目。
-A, --almost-all 列出不包括 . 和 .. 的所有条目。
-c 按更改时间排序文件
-d, --directory 列出目录条目
-h, --human-readable 以人类可读格式(即 K、M)显示大小。
-H 与上述相同,只是幂次(单位换算)为 1000 而不是 1024
-l 以长列表格式显示内容
-o 不带组信息的长列表格式
-r, --reverse 相反顺序显示内容
-s, --size 以块为单位打印每个文件的大小
-S 文件大小排序
--sort=WORD 按单词对内容排序。(即大小、版本、状态)。
-t 按修改时间排序
-u 最后访问时间排序
-v 版本排序
-1 每行列出一个文件

Section 4.1: 采用长列表格式列出文件

ls 命令的 -l 选项以长列表格式打印指定目录的内容。如果没有指定目录,则默认列出当前目录的内容。

ls -l /etc

输出示例:

total 1204
drwxr-xr-x 3 root root 4096 Apr 21 03:44 acpi
-rw-r--r-- 1 root root 3028 Apr 21 03:38 adduser.conf
drwxr-xr-x 2 root root 4096 Jun 11 20:42 alternatives
...

输出首先显示总计,表示所列目录中所有文件的总大小(以块为单位)。然后,它会显示所列目录中每个文件的八列信息。下面是输出中每列的详细信息:

Column No. Example Description
1.1 d 文件类型(见下表)
1.2~1.10 rwxr-xr-x 权限
2 3 硬链接数
3 root 所有者名称
4 root 用户组
5 4096 文件大小(以字节为单位)
6 Apr 21 03:44 修改时间
7 acpi 文件名称

文件类型

文件类型可以是以下任意字符之一。

Character File Type
- 常规文件
b 块专用文件
c 字符特殊文件
C 高性能(“连续数据”)文件
d 目录
D Door (仅适用于 Solaris 2.5+ 中的特殊 IPC 文件)
l 符号链接
M 离线(“迁移”)文件(Cray DMF)
n 网络特殊文件(HP-UX)
p FIFO(命名管道)
P 端口(仅限 Solaris 10+ 中的特殊系统文件)
s Socket 套接字
? 其他文件类型

Section 4.2: 列出最近修改的十个文件

下面将列出当前目录中最近修改的十个文件,使用长列表格式 (-l),并按时间 (-t)排序。

ls -lt | head

Section 4.3: 列出包含隐藏文件的所有文件

隐藏文件是文件名以 . 开头的文件,通常执行 ls 命令除非被要求列出,否则不会被列出。

例如,ls 的输出如下:

$ ls
bin pki

添加 -a 或 --all 选项将列出所有文件,包括隐藏文件。

$ ls -a
. .ansible .bash_logout .bashrc .lesshst .puppetlabs .viminfo
.. .bash_history .bash_profile bin pki .ssh

-A 或 --almost-all选项将列出所有文件,包括点文件,但不列出隐含的 . 和 .. 。注意,. 是当前目录,.. 是父目录。

$ ls -A
.ansible .bash_logout .bashrc .lesshst .puppetlabs .viminfo
.bash_history .bash_profile bin pki .ssh

Section 4.4: 不使用 ls 列出文件

Use the Bash shell's filename expansion and brace expansion capabilities to obtain the filenames:

使用 Bash shell 中的文件名后缀的特性也可以获取文件名:

# 显示当前目录下的文件和目录
printf "%s\n" *

# 只显示当前目录下的目录
printf "%s\n" */

# 只显示(部分)图像文件
printf "%s\n" *.{gif,jpg,png}

要将文件列表截取到一个变量中进行处理,使用 bash 数组是一种典型的好方法:

files=( * )

# iterate over them
for file in "${files[@]}"; do
        echo "$file"
done

Section 4.5: 列表文件

ls 命令列出指定目录的内容,不包括隐藏文件。如果没有指定目录,则默认列出当前目录的内容。

默认情况下,列出的文件按字母顺序排序,如果不能排在一行,则按列对齐。

$ ls
apt configs Documents Fonts Music Programming Templates workspace
bin Desktop eclipse git Pictures Public Videos

Section 4.6: 以树状格式列出文件

tree 命令以树状格式列出指定目录的内容。如果没有指定目录,则默认列出当前目录的内容。

输出示例:

$ tree /tmp
/tmp
├── 5037
├── adb.log
└── evince-20965
└── image.FPWTJY.png

使用 tree 命令的 -L 选项限制显示深度,使用 -d 选项只列出目录。

输出示例:

$ tree -L 1 -d /tmp
/tmp
└── evince-20965

Section 4.7: 按大小排序的文件列表

ls 命令的 -S 选项按文件大小降序排列文件。

$ ls -l -S ./Fruits
total 444
-rw-rw-rw- 1 root root 295303 Jul 28 19:19 apples.jpg
-rw-rw-rw- 1 root root 102283 Jul 28 19:19 kiwis.jpg
-rw-rw-rw- 1 root root 50197 Jul 28 19:19 bananas.jpg

与 -r 选项一起使用时,排序顺序则相反。

$ ls -l -S -r /Fruits
total 444
-rw-rw-rw- 1 root root 50197 Jul 28 19:19 bananas.jpg
-rw-rw-rw- 1 root root 102283 Jul 28 19:19 kiwis.jpg
-rw-rw-rw- 1 root root 295303 Jul 28 19:19 apples.jpg