ls(list)是Linux系统中最基础、最常用的命令之一,用于列出目录中的文件和子目录。通过不同的选项,ls可以显示文件的详细信息、按不同方式排序、过滤显示等。
ls是每个Linux用户必须掌握的命令,它的灵活使用能大大提高工作效率。
ls
列出当前目录
ls -l
详细列表
ls -la
所有文件详细
ls [选项] [文件/目录...]
如果没有指定文件或目录,默认显示当前目录的内容。
| 选项 | 长选项 | 说明 |
|---|---|---|
| -a | --all | 显示所有文件,包括隐藏文件(以.开头的文件) |
| -A | --almost-all | 显示所有文件,但不包括 . 和 .. 目录 |
| -l | 使用长列表格式显示详细信息 | |
| -h | --human-readable | 与-l一起使用,以人类可读的格式显示文件大小(K, M, G) |
| -t | 按修改时间排序,最新的在前 | |
| -r | --reverse | 反向排序 |
| -S | 按文件大小排序,最大的在前 | |
| -R | --recursive | 递归列出子目录内容 |
| -d | --directory | 列出目录本身,而不是目录内容 |
| -i | --inode | 显示文件的inode号 |
| -F | --classify | 在条目后添加指示符(*/=@|等) |
| --color | 使用颜色区分文件类型(auto/always/never) | |
| -1 | 每行只显示一个文件 | |
| -m | 用逗号分隔显示 |
# 列出当前目录内容
ls
# 列出指定目录内容
ls /etc
# 列出多个目录
ls ~ /tmp /var/log
# 显示所有文件(包括隐藏文件)
ls -a
# 显示所有文件,但不包括 . 和 ..
ls -A
# 详细列表显示
ls -l
# 详细列表显示,文件大小易读
ls -lh
# 详细列表显示所有文件
ls -la
-rw-r--r-- 1 user users 1.2K Oct 15 08:30 file.txt
drwxr-xr-x 2 user users 4.0K Oct 14 10:15 directory/
lrwxrwxrwx 1 user users 12 Oct 13 09:00 link -> target/
-rw-r--r-- - 文件权限
1 - 链接数
user - 所有者
users - 所属组
1.2K - 文件大小
Oct 15 08:30 - 修改时间
file.txt - 文件名
# 按修改时间排序(最新的在前)
ls -lt
# 按文件大小排序(最大的在前)
ls -lS
# 按文件名排序(字母顺序)
ls -l # 默认按文件名排序
# 反向排序
ls -lr
ls -ltr # 按时间反向排序(最旧的在前)
# 递归列出所有子目录内容
ls -R
# 递归列出并显示详细信息
ls -lR
# 递归列出指定深度的目录(配合find使用)
find . -maxdepth 2 -type f | ls -l
# 添加文件类型指示符
ls -F
# 显示结果示例
ls -F
file.txt # 普通文件
directory/ # 目录
link@ # 符号链接
script.sh* # 可执行文件
socket=| # 套接字
pipe=| # 管道
# 只显示今天修改的文件
ls -l --time-style=+%Y-%m-%d | grep $(date +%Y-%m-%d)
# 显示最近24小时内修改的文件(配合find)
find . -type f -mtime -1 -exec ls -l {} \;
# 列出所有.txt文件
ls *.txt
# 列出所有以a开头的文件
ls a*
# 列出所有包含test的文件
ls *test*
# 列出所有.jpg和.png文件
ls *.jpg *.png
# 列出所有长度为3个字符的文件
ls ???
# 启用颜色显示(默认)
ls --color=auto
# 总是使用颜色
ls --color=always
# 禁用颜色
ls --color=never
# 自定义颜色方案(通过LS_COLORS环境变量)
export LS_COLORS="di=1;34:ln=1;36:*.txt=1;32"
ls --color=auto
蓝色 - 目录
绿色 - 可执行文件
青色 - 符号链接
红色 - 压缩文件
紫色 - 图片文件
黄色 - 设备文件
# 常用组合:显示所有文件的详细信息,按时间排序,大小易读
ls -lath
# 显示目录的详细信息(不进入目录)
ls -ld /etc
# 递归显示所有文件的详细信息,按大小排序
ls -lRS
# 显示inode号和信息
ls -li
#!/bin/bash
# 统计当前目录下各种类型文件的数量
echo "=== 文件统计 ==="
echo "普通文件: $(ls -l | grep -c '^-')"
echo "目录: $(ls -l | grep -c '^d')"
echo "符号链接: $(ls -l | grep -c '^l')"
echo "设备文件: $(ls -l | grep -c '^[bc]')"
# 按文件大小筛选
echo "=== 大文件查找(大于10M)==="
ls -lh | awk '$5 ~ /M$/ && int($5) > 10 {print $9, $5}'
# 查找最新修改的文件
echo "=== 最近修改的文件 ==="
ls -lt | head -10
# 在~/.bashrc中设置常用别名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ls='ls --color=auto'
# 按时间排序的详细列表
alias llt='ls -alt'
# 按大小排序的详细列表
alias lls='ls -alS'
# 配合grep查找文件
ls -la | grep "pattern"
ls -la | grep -E "\.(txt|pdf|doc)$"
# 配合wc统计文件数量
ls | wc -l # 统计文件数量
ls -l | grep -c '^-' # 统计普通文件数量
# 配合sort进一步排序
ls -l | sort -k5 -rn # 按第5列(大小)数字反向排序
# 配合awk提取特定信息
ls -l | awk '{print $9, $5}' # 只显示文件名和大小
# 每行显示一个文件
ls -1
# 用逗号分隔显示
ls -m
# 横排显示(默认)
ls -C
# 垂直排序列显示
ls -x
# 自定义输出格式
ls -l --time-style=full-iso # 完整ISO时间格式
ls -l --time-style=+"%Y-%m-%d %H:%M:%S" # 自定义时间格式
权限位:-rwxr-xr-x
位置: 123456789
解释:
1: 文件类型(-:普通文件,d:目录,l:链接,c:字符设备,b:块设备)
2-4: 所有者权限(rwx:读、写、执行)
5-7: 所属组权限(r-x:读、执行)
8-10: 其他用户权限(r-x:读、执行)
| 类型字符 | 说明 | 示例 |
|---|---|---|
| - | 普通文件 | -rw-r--r-- |
| d | 目录 | drwxr-xr-x |
| l | 符号链接 | lrwxrwxrwx |
| c | 字符设备 | crw-rw-rw- |
| b | 块设备 | brw-rw---- |
| s | 套接字 | srwxr-xr-x |
| p | 管道 | prw-r--r-- |
-a 选项find 命令ls -l 输出的文件大小单位默认是字节,使用 -h 选项可显示易读格式LS_COLORS 环境变量自定义