在Linux操作系统中,列出文件是最基础且频繁使用的操作之一,通过命令行工具,用户可以高效地查看目录内容、筛选文件、获取文件属性等,本文将详细介绍Linux中用于列出文件的各类命令,包括其基本用法、常用选项及实际应用场景,帮助用户全面掌握文件 listing 技巧。

基础列出命令:ls
ls 是Linux中最常用的文件列表命令,默认情况下会显示当前目录下的文件和子目录名称(不包含隐藏文件),其基本语法为 ls [选项] [目录/文件],在终端输入 ls 即可列出当前目录的非隐藏文件,若需查看指定目录,如 /home,则使用 ls /home。
常用选项及功能:
-l:以长格式显示文件详细信息,包括权限、所有者、大小、修改时间等。ls -l会显示类似-rw-r--r-- 1 user group 4096 Jan 1 12:00 file.txt的输出。-a:显示所有文件,包括以 开头的隐藏文件。ls -a会列出.bashrc等隐藏文件。-h:以人类可读格式显示文件大小(如 KB、MB),需配合-l使用,ls -lh。-t:按修改时间排序,最新的文件显示在最前,ls -lt。-r:反向排序,ls -ltr会按修改时间从旧到新排列。-R或--recursive:递归列出子目录内容,ls -R会显示当前目录及其所有子目录的文件。
组合使用示例:
ls -lah:以长格式、人类可读大小、显示隐藏文件的方式列出当前目录内容。ls -l --time-style=long-iso:以长格式显示文件,并使用YYYY-MM-DD HH:MM格式的时间。
其他实用文件列出命令
除了 ls,Linux还提供了其他命令用于特定场景的文件 listing:
dir 和 vdir
dir 是 ls 的一个别名,默认以多列、带颜色方式显示文件,行为与 ls -C 类似。vdir 则是 ls -l 的别名,以长格式显示文件。dir /etc 会列出 /etc 目录的文件,而 vdir ~ 会显示用户主目录的详细文件列表。
find
find 命令用于根据指定条件搜索文件,功能远超 ls,其基本语法为 find [路径] [条件]。

find . -name "*.txt":在当前目录及其子目录中查找所有.txt文件。find /home -type f -size +10M:在/home目录下查找大于 10MB 的普通文件(-type f)。find . -mtime -7:查找最近 7 天内修改过的文件。
tree
tree 命令以树状结构递归显示目录内容,需先安装(如 sudo apt install tree)。tree -L 2 会显示当前目录及两层子目录的文件结构。
stat
stat 命令用于显示文件的详细状态信息,包括 inode、权限、大小、时间戳等。stat file.txt 会输出文件的完整元数据。
lsblk 和 df
lsblk:列出块设备信息,如硬盘分区、U盘等。lsblk -f会显示文件系统类型。df:显示磁盘空间使用情况。df -h会以人类可读格式列出各分区的使用量。
文件列表的筛选与排序
在实际操作中,经常需要结合管道符 和其他命令对 ls 的输出进行筛选或排序。
ls -l | grep "txt":仅显示扩展名为.txt的文件。ls -l | sort -k5 -n:按文件大小(第5列)进行数字排序。ls -l | awk '{print $9, $5}':提取文件名和大小两列。
表格总结常用 ls 选项
| 选项 | 全称 | 功能描述 |
|---|---|---|
-l |
--format=long |
长格式显示文件详细信息 |
-a |
--all |
显示所有文件,包括隐藏文件 |
-h |
--human-readable |
以人类可读格式显示文件大小 |
-t |
--sort=time |
按修改时间排序,最新的在前 |
-r |
--reverse |
反向排序 |
-R |
--recursive |
递归列出子目录内容 |
-S |
--sort=size |
按文件大小排序 |
-i |
--inode |
显示文件的 inode 号 |
实际应用场景
- 系统管理:使用
ls -l /etc查看系统配置文件,通过ls -l /var/log检查日志文件。 - 开发调试:通过
ls -la project/查看项目目录的隐藏文件(如.git),或用find . -name "*.log"搜索日志文件。 - 磁盘管理:结合
df -h和ls -lh快速定位大文件所在的目录。
相关问答FAQs
Q1: 如何在Linux中列出目录中所有文件(包括隐藏文件)并按修改时间从新到旧排序?
A: 可以使用 ls -la 显示所有文件,再通过管道符结合 sort 命令排序,具体命令为:ls -la | sort -k8 -r。-k8 指定按第8列(时间字段)排序,-r 表示反向排序(从新到旧),若需更精确的时间排序,可使用 ls -la --time-style=full-iso | sort -k6 -r。

Q2: 如何列出当前目录下所有子目录的大小?
A: 使用 du 命令结合 ls 可实现此需求。du -sh * | sort -hr 中,du -sh * 计算每个子目录的大小(-s 表示汇总,-h 表示人类可读),sort -hr 按大小从大到小排序,若需排除隐藏目录,可改为 du -sh * | grep -v "^/[^/]*$" | sort -hr。
