本文档风哥主要介绍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
- 列出文件:显示目录中的文件和子目录
- 显示属性:查看文件权限、所有者、大小等信息
- 排序输出:按名称、大小、时间等排序
- 筛选文件:按特定条件过滤文件
- 递归显示:显示子目录内容
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):网络通信的套接字
Part02-生产环境规划与建议
2.1 常用参数组合
# 基础组合
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基础用法
# 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高级参数
# 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 排序与筛选
# 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命令最佳实践
- 常用别名:设置ll、la等别名提高效率
- 合理排序:根据需求选择合适的排序方式
- 组合使用:与其他命令组合实现复杂功能
- 性能考虑:大目录使用-U参数避免排序开销
- 安全检查:定期检查特殊权限文件
5.2 常用命令组合
# 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 别名配置
# 编辑 ~/.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
...
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
