ls — 列出目录内容

ls 是 Linux 中使用频率最高的命令之一,用于列出目录中的文件和子目录。它支持丰富的参数来展示文件的各种属性。

命令说明

ls 命令读取目录中的条目,并按照字母顺序排列显示。默认情况下,它只显示当前目录下的文件名(不包含隐藏文件,即以 . 开头的文件)。

应用场景

  • 查看当前目录下有哪些文件
  • 检查文件权限和所有者
  • 按修改时间排序查找最近改动的文件
  • 递归列出所有子目录内容
  • 查看文件的 inode 号(用于查找硬链接)

常用示例

示例 1:基础列表

bash
复制代码
ls
plaintext
复制代码
Documents  Downloads  Music  Pictures  project  todo.txt

示例 2:长格式列出,显示详细信息

bash
复制代码
ls -l
plaintext
复制代码
total 24
drwxr-xr-x 2 alice staff 4096 Aug 18 10:30 Documents
drwxr-xr-x 5 alice staff 4096 Aug 17 14:22 Downloads
-rw-r--r-- 1 alice staff 1523 Aug 18 09:15 todo.txt

示例 3:列出所有文件(含隐藏文件),并以人类可读的格式显示大小

bash
复制代码
ls -lah
plaintext
复制代码
total 32K
drwxr-xr-x  6 alice staff 4.0K Aug 18 10:30 .
drwxr-xr-x 12 alice staff 4.0K Aug 16 08:00 ..
-rw-r--r--  1 alice staff  220 Aug 16 08:00 .bashrc
drwxr-xr-x  2 alice staff 4.0K Aug 18 10:30 Documents
-rw-r--r--  1 alice staff 1.5K Aug 18 09:15 todo.txt

示例 4:按修改时间倒序排列

bash
复制代码
ls -lt
plaintext
复制代码
total 24
-rw-r--r-- 1 alice staff 1523 Aug 18 09:15 todo.txt
drwxr-xr-x 2 alice staff 4096 Aug 18 10:30 Documents
drwxr-xr-x 5 alice staff 4096 Aug 17 14:22 Downloads

示例 5:递归列出所有子目录

bash
复制代码
ls -R project
plaintext
复制代码
project:
src  tests  README.md  Makefile

project/src:
main.c  utils.c  utils.h

project/tests:
test_main.c  test_utils.c

help 参数详解

参数 长参数 说明
-a --all 列出所有文件,包括以 . 开头的隐藏文件
-A --almost-all 列出所有文件,但不包括 ...
-l 使用长格式列出,显示权限、所有者、大小、修改时间等
-h --human-readable -l 配合,以人类可读格式显示文件大小(如 1K234M2G
-t 按修改时间排序,最新的在前
-r --reverse 反转排序顺序
-S 按文件大小排序,最大的在前
-R --recursive 递归列出子目录的内容
-i --inode 显示每个文件的 inode 号
-d --directory 只列出目录本身,而不列出目录中的内容
-1 每行只显示一个文件(单列输出)
-F --classify 在文件名后追加指示符:/ 表示目录,* 表示可执行文件,@ 表示符号链接
-s --size 显示每个文件分配的块大小(以块为单位)
-n --numeric-uid-gid 显示数字形式的 UID 和 GID,而非用户名和组名