菜鸟科技网

Linux命令如何列出文件?

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

Linux命令如何列出文件?-图1
(图片来源网络,侵删)

基础列出命令: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:

dirvdir

dirls 的一个别名,默认以多列、带颜色方式显示文件,行为与 ls -C 类似。vdir 则是 ls -l 的别名,以长格式显示文件。dir /etc 会列出 /etc 目录的文件,而 vdir ~ 会显示用户主目录的详细文件列表。

find

find 命令用于根据指定条件搜索文件,功能远超 ls,其基本语法为 find [路径] [条件]

Linux命令如何列出文件?-图2
(图片来源网络,侵删)
  • 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 会输出文件的完整元数据。

lsblkdf

  • 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 号

实际应用场景

  1. 系统管理:使用 ls -l /etc 查看系统配置文件,通过 ls -l /var/log 检查日志文件。
  2. 开发调试:通过 ls -la project/ 查看项目目录的隐藏文件(如 .git),或用 find . -name "*.log" 搜索日志文件。
  3. 磁盘管理:结合 df -hls -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

Linux命令如何列出文件?-图3
(图片来源网络,侵删)

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

分享:
扫描分享到社交APP
上一篇
下一篇