1. 首页 > Linux教程 > 正文

Linux教程FG047-ls命令全参数详解(文件/目录查看/筛选/排序)

本文档风哥主要介绍Linux ls命令的全参数详解,包括文件和目录查看、筛选、排序等功能,参考Red Hat Enterprise Linux 10官方文档,适合运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn 学习交流加群风哥QQ113257174

参考Red Hat Enterprise Linux 10官方文档中的System administration章节

Part01-基础概念与理论知识

1.1 ls命令基本概念

ls(list)命令是Linux系统中最常用的命令之一,用于列出目录内容和文件信息。 更多学习教程公众号风哥教程itpux_com

ls命令核心功能:

  • 列出文件:显示目录中的文件和子目录
  • 显示属性:查看文件权限、所有者、大小等信息
  • 排序输出:按名称、大小、时间等排序
  • 筛选文件:按特定条件过滤文件
  • 递归显示:显示子目录内容

1.2 文件权限与属性

ls -l命令输出的第一列显示文件权限信息:

# 文件权限格式说明
-rw-r–r–. 1 root root 1234 Apr 2 10:00 filename

权限字段解析:
– 第1位:文件类型
-:普通文件
d:目录
l:符号链接
b:块设备
c:字符设备
s:套接字
p:命名管道

– 第2-4位:所有者权限(rwx)
r:读取权限
w:写入权限
x:执行权限
-:无此权限

– 第5-7位:所属组权限(rwx)
– 第8-10位:其他用户权限(rwx)

– 第11位:SELinux安全上下文(.或+)
.:有SELinux上下文
+:有ACL权限
空格:无特殊权限

其他字段:
– 数字:硬链接数
– root:所有者
– root:所属组
– 1234:文件大小(字节)
– Apr 2 10:00:修改时间
– filename:文件名

1.3 文件类型识别

通过ls命令可以识别不同类型的文件: 学习交流加群风哥微信: itpux-com

  • 普通文件(-):文本文件、二进制文件、数据文件
  • 目录(d):包含其他文件和目录的容器
  • 链接文件(l):指向其他文件的符号链接
  • 设备文件(b/c):块设备或字符设备
  • 管道文件(p):进程间通信的命名管道
  • 套接字文件(s):网络通信的套接字
风哥提示:ls命令是运维工作中使用频率最高的命令之一,熟练掌握其参数和用法可以大幅提升工作效率。

Part02-生产环境规划与建议

2.1 常用参数组合

# ls常用参数组合

# 基础组合
ls -l # 长格式显示
ls -a # 显示所有文件(包括隐藏文件)
ls -h # 人类可读的文件大小
ls -la # 组合:长格式+所有文件
ls -lah # 组合:长格式+所有文件+人类可读大小

# 排序组合
ls -lt # 按修改时间排序(最新在前)
ls -lS # 按文件大小排序(最大在前)
ls -lX # 按扩展名排序
ls -lv # 按版本号排序

# 反向排序
ls -ltr # 按修改时间反向排序(最旧在前)
ls -lSr # 按文件大小反向排序(最小在前)

# 递归显示
ls -R # 递归显示子目录
ls -lR # 递归长格式显示

# 显示详细信息
ls -li # 显示inode号
ls -ln # 显示数字UID/GID
ls -lZ # 显示SELinux上下文

# 时间格式
ls -l –time-style=long-iso # ISO格式时间
ls -l –time-style=full-iso # 完整ISO格式
ls -l –time-style=locale # 本地化格式

2.2 输出格式控制

ls命令支持多种输出格式:

  • 长格式(-l):显示详细文件信息
  • 单列格式(-1):每行显示一个文件
  • 逗号分隔(-m):用逗号分隔文件名
  • 水平格式(-x):按行排序显示
  • 垂直格式(-C):按列排序显示

2.3 性能优化建议

在大目录中使用ls的性能优化: from LinuxDBA视频:www.itpux.com

  • 避免排序:使用-U参数不排序
  • 限制输出:使用head或tail限制输出
  • 使用find:对于复杂查询使用find命令
  • 关闭颜色:使用–color=none关闭颜色

Part03-生产环境项目实施方案

3.1 ls基础用法

# ls基础用法示例

# 1. 列出当前目录内容
# ls
Desktop Documents Downloads Music Pictures Public Templates Videos

# 2. 列出指定目录内容
# ls /etc
adjtime hosts profile.d
aliases hosts.allow protocols
aliases.db hosts.deny pulse
anacrontab hp qemu-ga

# 3. 显示所有文件(包括隐藏文件)
# ls -a
. .bash_history .bash_profile .cache .local .ssh Videos
.. .bash_logout .bashrc .config .mozilla .viminfo Desktop

# 4. 长格式显示
# ls -l
total 0
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Desktop
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Documents
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Downloads
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Music
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Pictures
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Public
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Templates
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Videos

# 5. 显示人类可读的文件大小
# ls -lh /var/log/messages
-rw——-. 1 root root 1.2M Apr 2 10:00 /var/log/messages

# 6. 显示inode号
# ls -li /etc/passwd
1234567 -rw-r–r–. 1 root root 2847 Apr 2 10:00 /etc/passwd

# 7. 显示SELinux上下文
# ls -lZ /var/www/html/index.html
-rw-r–r–. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 Apr 2 10:00 /var/www/html/index.html

# 8. 显示目录本身而非内容
# ls -ld /etc
drwxr-xr-x. 140 root root 8192 Apr 2 10:00 /etc

# 9. 显示文件类型标识
# ls -F
Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ Templates/ Videos/
script.sh* test.txt

# 文件类型标识说明:
# / – 目录
# * – 可执行文件
# @ – 符号链接
# | – FIFO命名管道
# = – 套接字文件

3.2 ls高级参数

# ls高级参数详解

# 1. 按时间排序
# ls -lt # 按修改时间排序(最新在前)
total 8
-rw-r–r–. 1 root root 1024 Apr 2 16:00 newest.txt
-rw-r–r–. 1 root root 2048 Apr 2 15:00 middle.txt
-rw-r–r–. 1 root root 512 Apr 2 14:00 oldest.txt

# ls -lt –time=atime # 按访问时间排序
# ls -lt –time=ctime # 按状态改变时间排序

# 2. 按大小排序
# ls -lS # 按文件大小排序(最大在前)
total 8
-rw-r–r–. 1 root root 2048 Apr 2 15:00 large.txt
-rw-r–r–. 1 root root 1024 Apr 2 16:00 medium.txt
-rw-r–r–. 1 root root 512 Apr 2 14:00 small.txt

# 3. 按扩展名排序
# ls -lX
total 8
-rw-r–r–. 1 root root 1024 Apr 2 10:00 file.conf
-rw-r–r–. 1 root root 2048 Apr 2 10:00 script.sh
-rw-r–r–. 1 root root 512 Apr 2 10:00 document.txt

# 4. 反向排序
# ls -ltr # 按修改时间反向排序(最旧在前)
total 8
-rw-r–r–. 1 root root 512 Apr 2 14:00 oldest.txt
-rw-r–r–. 1 root root 2048 Apr 2 15:00 middle.txt
-rw-r–r–. 1 root root 1024 Apr 2 16:00 newest.txt

# 5. 递归显示
# ls -R
.:
Desktop Documents Downloads Music Pictures Public Templates Videos

./Desktop:
file1.txt file2.txt

./Documents:
report.pdf spreadsheet.xlsx

./Downloads:
archive.tar.gz package.rpm

# 6. 显示完整时间戳
# ls -l –time-style=full-iso
total 0
drwxr-xr-x. 2 user user 6 2026-04-02 10:00:00.123456789 +0800 Desktop
drwxr-xr-x. 2 user user 6 2026-04-02 10:00:00.123456789 +0800 Documents

# 7. 显示数字UID/GID
# ls -ln
total 0
drwxr-xr-x. 2 1000 1000 6 Apr 2 10:00 Desktop
drwxr-xr-x. 2 1000 1000 6 Apr 2 10:00 Documents

# 8. 显示块大小
# ls -ls
total 8
4 drwxr-xr-x. 2 user user 6 Apr 2 10:00 Desktop
4 drwxr-xr-x. 2 user user 6 Apr 2 10:00 Documents

# 9. 显示作者信息
# ls -l –author
total 0
drwxr-xr-x. 2 user user user 6 Apr 2 10:00 Desktop

# 10. 显示ACL权限
# ls -la
total 8
drwxr-xr-x. 2 user user 6 Apr 2 10:00 .
drwxr-xr-x. 20 root root 6 Apr 2 09:00 ..
-rw-rw-r–+ 1 user user 0 Apr 2 10:00 file_with_acl.txt

3.3 排序与筛选

# ls排序与筛选实战

# 1. 查找最近修改的文件
# ls -lt | head -10
total 12345
-rw-r–r–. 1 root root 1234 Apr 2 16:00 latest_file.txt
-rw-r–r–. 1 root root 2345 Apr 2 15:50 second_latest.txt

# 2. 查找最大的文件
# ls -lS | head -10
total 12345
-rw-r–r–. 1 root root 102400 Apr 2 10:00 largest_file.log
-rw-r–r–. 1 root root 51200 Apr 2 10:00 second_largest.log

# 3. 查找特定类型的文件
# ls -l *.txt
-rw-r–r–. 1 user user 1234 Apr 2 10:00 file1.txt
-rw-r–r–. 1 user user 2345 Apr 2 10:00 file2.txt

# ls -l *.log *.txt
-rw-r–r–. 1 user user 1234 Apr 2 10:00 file1.txt
-rw-r–r–. 1 user user 5678 Apr 2 10:00 system.log

# 4. 查找隐藏文件
# ls -la | grep “^\.”
drwxr-xr-x. 20 root root 4096 Apr 2 09:00 .
drwxr-xr-x. 8 root root 4096 Apr 1 10:00 ..
-rw——-. 1 user user 1234 Apr 2 10:00 .bash_history
-rw-r–r–. 1 user user 18 Apr 2 09:00 .bash_logout

# 5. 查找目录
# ls -ld */
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Desktop/
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Documents/
drwxr-xr-x. 2 user user 6 Apr 2 10:00 Downloads/

# 6. 查找特定权限的文件
# ls -l | grep “^-rwx”
-rwxr-xr-x. 1 root root 1234 Apr 2 10:00 script.sh
-rwx——. 1 root root 2345 Apr 2 10:00 private_script.sh

# 7. 查找特定所有者的文件
# ls -l | grep “root”
drwxr-xr-x. 2 root root 6 Apr 2 10:00 root_dir
-rw-r–r–. 1 root root 1234 Apr 2 10:00 root_file.txt

# 8. 组合筛选
# ls -lSh | grep “\.log$” | head -5
-rw-r–r–. 1 root root 1024K Apr 2 10:00 application.log
-rw-r–r–. 1 root root 512K Apr 2 10:00 system.log
-rw-r–r–. 1 root root 256K Apr 2 10:00 error.log

# 9. 使用通配符筛选
# ls -l file[0-9].txt
-rw-r–r–. 1 user user 1234 Apr 2 10:00 file1.txt
-rw-r–r–. 1 user user 2345 Apr 2 10:00 file2.txt
-rw-r–r–. 1 user user 3456 Apr 2 10:00 file3.txt

# ls -l [a-z]*.conf
-rw-r–r–. 1 root root 1234 Apr 2 10:00 app.conf
-rw-r–r–. 1 root root 2345 Apr 2 10:00 config.conf

# 10. 显示文件数量
# ls -1 | wc -l
25

# ls -ld */ | wc -l
8

Part04-生产案例与实战讲解

4.1 案例1:查找大文件

# 查找大文件实战

# 场景:磁盘空间不足,需要查找大文件

# 1. 查找当前目录下最大的10个文件
# ls -lSh | head -11
total 102400
-rw-r–r–. 1 root root 50M Apr 2 10:00 large_file1.tar
-rw-r–r–. 1 root root 30M Apr 2 10:00 large_file2.log
-rw-r–r–. 1 root root 20M Apr 2 10:00 large_file3.zip
-rw-r–r–. 1 root root 10M Apr 2 10:00 medium_file1.txt
-rw-r–r–. 1 root root 8M Apr 2 10:00 medium_file2.dat

# 2. 查找/var/log下最大的日志文件
# ls -lhS /var/log | head -10
total 102M
-rw——-. 1 root root 50M Apr 2 10:00 messages
-rw——-. 1 root root 30M Apr 2 10:00 secure
-rw-r–r–. 1 root root 20M Apr 2 10:00 cron
-rw-r–r–. 1 root root 2M Apr 2 10:00 dmesg

# 3. 查找超过100MB的文件
# find / -type f -size +100M -exec ls -lh {} \;
-rw-r–r–. 1 root root 150M Apr 2 10:00 /var/lib/mysql/ibdata1
-rw-r–r–. 1 root root 200M Apr 2 10:00 /backup/full-backup.tar.gz

# 4. 查找最近7天修改的大文件
# find /var/log -type f -mtime -7 -size +10M -exec ls -lh {} \;
-rw——-. 1 root root 50M Apr 2 10:00 /var/log/messages
-rw——-. 1 root root 30M Apr 2 10:00 /var/log/secure

# 5. 按文件大小分组统计
# find . -type f -exec ls -lh {} \; | awk ‘{print $5}’ | sort | uniq -c | sort -nr
10 4.0K
5 8.0K
3 1.0M
2 10M
1 50M

4.2 案例2:监控文件变化

# 监控文件变化实战

# 场景:监控配置文件目录的变化

# 1. 查看最近修改的配置文件
# ls -lt /etc/*.conf | head -10
-rw-r–r–. 1 root root 1234 Apr 2 16:00 /etc/ssh/sshd_config
-rw-r–r–. 1 root root 2345 Apr 2 15:00 /etc/httpd/conf/httpd.conf
-rw-r–r–. 1 root root 3456 Apr 2 14:00 /etc/my.cnf

# 2. 查看最近24小时修改的文件
# find /etc -type f -mtime -1 -exec ls -lh {} \;
-rw-r–r–. 1 root root 1234 Apr 2 16:00 /etc/ssh/sshd_config
-rw-r–r–. 1 root root 2345 Apr 2 15:00 /etc/httpd/conf/httpd.conf

# 3. 监控日志文件增长
# watch -n 5 ‘ls -lh /var/log/messages’
Every 5.0s: ls -lh /var/log/messages

-rw——-. 1 root root 50M Apr 2 16:00 /var/log/messages

# 4. 比较两个时间点的文件列表
# ls -lt > /tmp/before.txt
# … 执行一些操作 …
# ls -lt > /tmp/after.txt
# diff /tmp/before.txt /tmp/after.txt
< -rw-r--r--. 1 root root 1234 Apr 2 16:00 old_file.txt --- > -rw-r–r–. 1 root root 2345 Apr 2 16:05 new_file.txt

# 5. 查看文件访问时间
# ls -ltu /var/log | head -10
total 102M
-rw——-. 1 root root 50M Apr 2 16:00 messages
-rw——-. 1 root root 30M Apr 2 15:30 secure

4.3 案例3:权限检查

# 权限检查实战

# 场景:检查系统关键文件的权限

# 1. 检查SUID文件
# ls -l /usr/bin | grep “^-rws”
-rwsr-xr-x. 1 root root 12345 Apr 2 10:00 passwd
-rwsr-xr-x. 1 root root 23456 Apr 2 10:00 sudo
-rwsr-xr-x. 1 root root 34567 Apr 2 10:00 su

# 2. 检查SGID文件
# ls -l /usr/bin | grep “^-rwxr-s”
-rwxr-sr-x. 1 root root 12345 Apr 2 10:00 write
-rwxr-sr-x. 1 root mail 23456 Apr 2 10:00 mail

# 3. 检查可写文件
# ls -l /etc | grep “^-rw-”
-rw-r–r–. 1 root root 1234 Apr 2 10:00 hosts
-rw-r–r–. 1 root root 2345 Apr 2 10:00 resolv.conf

# 4. 检查所有人可写文件(安全风险)
# find /etc -type f -perm -002 -exec ls -lh {} \;
-rw-rw-rw-. 1 root root 1234 Apr 2 10:00 /etc/hosts.allow

# 5. 检查无主文件
# find /home -nouser -o -nogroup -exec ls -lh {} \;
-rw-r–r–. 1 1001 1001 1234 Apr 2 10:00 /home/deleted_user/file.txt

# 6. 检查关键文件权限
# ls -l /etc/passwd /etc/shadow /etc/sudoers
-rw-r–r–. 1 root root 2847 Apr 2 10:00 /etc/passwd
———-. 1 root root 1234 Apr 2 10:00 /etc/shadow
-r–r—–. 1 root root 4567 Apr 2 10:00 /etc/sudoers

# 7. 检查目录权限
# ls -ld /home/*
drwx——. 15 user1 user1 4096 Apr 2 10:00 /home/user1
drwx——. 15 user2 user2 4096 Apr 2 10:00 /home/user2
drwxr-xr-x. 2 root root 4096 Apr 2 10:00 /home/shared

# 8. 生成权限报告
# cat > /fgedu/shell/check-permissions.sh << 'EOF' #!/bin/bash # from:www.itpux.com.qq113257174.wx:itpux-com echo "系统关键文件权限检查报告" echo "========================" echo "生成时间: $(date)" echo "" echo "1. SUID文件:" find /usr/bin -type f -perm -4000 -exec ls -lh {} \; echo "" echo "2. SGID文件:" find /usr/bin -type f -perm -2000 -exec ls -lh {} \; echo "" echo "3. 所有人可写文件:" find /etc -type f -perm -002 -exec ls -lh {} \; echo "" echo "4. 无主文件:" find /home -nouser -o -nogroup -exec ls -lh {} \; EOF # chmod +x /fgedu/shell/check-permissions.sh # /fgedu/shell/check-permissions.sh 系统关键文件权限检查报告 ======================== 生成时间: Fri Apr 2 16:30:00 CST 2026 1. SUID文件: -rwsr-xr-x. 1 root root 12345 Apr 2 10:00 /usr/bin/passwd -rwsr-xr-x. 1 root root 23456 Apr 2 10:00 /usr/bin/sudo ...

Part05-风哥经验总结与分享

5.1 ls命令最佳实践

ls命令最佳实践:

  • 常用别名:设置ll、la等别名提高效率
  • 合理排序:根据需求选择合适的排序方式
  • 组合使用:与其他命令组合实现复杂功能
  • 性能考虑:大目录使用-U参数避免排序开销
  • 安全检查:定期检查特殊权限文件

5.2 常用命令组合

# ls常用命令组合

# 1. 查找并排序
ls -lS | head -n 10 # 最大的10个文件
ls -lt | head -n 10 # 最新的10个文件
ls -lSr | head -n 10 # 最小的10个文件
ls -ltr | head -n 10 # 最旧的10个文件

# 2. 统计文件数量
ls -1 | wc -l # 文件总数
ls -ld */ | wc -l # 目录数量
ls -l | grep “^-” | wc -l # 普通文件数量
ls -l | grep “^d” | wc -l # 目录数量

# 3. 查找特定文件
ls -l *.log # 所有日志文件
ls -l | grep “Apr 2” # 今天修改的文件
ls -lR | grep “total” # 显示每个目录的大小

# 4. 与grep组合
ls -l | grep “root” # root用户的文件
ls -l | grep “^d” # 只显示目录
ls -l | grep “^-” # 只显示文件
ls -l | grep “^l” # 只显示链接

# 5. 与find组合
find . -type f -exec ls -lh {} \; # 显示所有文件详情
find . -mtime -1 -exec ls -lh {} \; # 最近24小时修改的文件

# 6. 与awk组合
ls -lh | awk ‘{print $5, $9}’ # 只显示大小和文件名
ls -lh | awk ‘{sum+=$5} END {print sum}’ # 计算总大小

# 7. 与xargs组合
ls *.txt | xargs rm # 删除所有txt文件
ls -d */ | xargs -n1 tar -czf {}.tar.gz {} # 打包所有目录

5.3 别名配置

# ls别名配置建议

# 编辑 ~/.bashrc
# cat >> ~/.bashrc << 'EOF' # ls命令别名 alias ls='ls --color=auto' alias ll='ls -lh' alias la='ls -Ah' alias l='ls -CF' alias lt='ls -lht' alias lS='ls -lhS' alias ldir='ls -ld */' alias lfile='ls -lh | grep "^-"' alias lsize='ls -lhS | head -10' alias lnew='ls -lht | head -10' alias lold='ls -lhtr | head -10' EOF # source ~/.bashrc # 使用别名示例 # ll total 0 drwxr-xr-x. 2 user user 6 Apr 2 10:00 Desktop drwxr-xr-x. 2 user user 6 Apr 2 10:00 Documents # la . .. .bash_history .bash_logout .bash_profile .bashrc .cache Desktop # ldir drwxr-xr-x. 2 user user 6 Apr 2 10:00 Desktop/ drwxr-xr-x. 2 user user 6 Apr 2 10:00 Documents/ # lsize total 1024 -rw-r--r--. 1 user user 100K Apr 2 10:00 large_file.txt -rw-r--r--. 1 user user 50K Apr 2 10:00 medium_file.txt ...

风哥总结:ls命令虽然简单,但功能强大。熟练掌握各种参数和组合使用方法,可以大幅提升日常运维效率。建议根据个人习惯设置常用别名,并定期使用ls检查系统关键文件的权限和状态。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息