| 选项 | 说明 |
|---|---|
-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