想按名称或类型查找?试试这个技巧!

基础通配符过滤

通过 Shell 通配符快速匹配文件名:

ls *.txt          # 列出所有.txt文件
ls report?.log    # 匹配 report1.log, report2.log 等
ls image[0-9].jpg # 匹配 image0.jpg 到 image9.jpg
rm -v !(*.bak)    # 删除非备份文件(需启用 extglob: shopt -s extglob)

find 命令:递归深度过滤

最强大的文件搜索工具,支持多条件组合:

find ~ -type f -size +10M               # 查找主目录大于10MB的文件
# 时间过滤(mtime=修改时间)
find /etc -mtime -7 -name "*.conf"      # 查找7天内修改的.conf文件
# 权限过滤
find . -perm 644 -exec ls -l {} \;      # 查找权限644的文件并列出详情
# 组合删除(谨慎使用)
find /tmp -type f -mtime +30 -delete    # 删除/tmp中30天前的文件

grep 家族:内容过滤

grep – 基础文本搜索

grep "error" /var/log/syslog          # 搜索包含"error"的行
grep -i "warning" app.log             # 忽略大小写搜索
grep -r "TODO" ~/projects/            # 递归搜索目录
grep -v "success" transaction.log     # 过滤掉含"success"的行

egrep – 扩展正则表达式

egrep "error|fail" system.log         # 匹配"error"或"fail"
egrep "^[A-Z]" document.txt           # 匹配以大写字母开头的行

zgrep – 压缩文件搜索

zgrep "404" /var/log/nginx/access.log.*.gz  # 在gzip日志中搜索

awk:结构化数据过滤

处理列式数据(如 CSV、日志):

awk -F':' '{print $1}' /etc/passwd          # 提取用户名(以:分隔)
awk '$3 > 1000' /etc/passwd                 # 打印UID大于1000的用户
awk '/GET/ {count++} END {print count}' access.log  # 统计GET请求次数

sed:流编辑器过滤

文本替换与提取:

sed -n '/2025-10-01/p' server.log     # 打印含日期的行
sed 's/old/new/g' file.txt            # 全局替换文本
sed -e '1d' -e '$d' data.csv          # 删除首尾行

正则表达式高级技巧

通用匹配规则(适用于 grep/sed/awk):

  • ^ : 行首锚点
    grep "^start" file
  • : 行尾锚点
    grep "end$" file
  • \d : 数字(需启用 -P 选项)
    grep -P "\d{3}-\d{4}" contacts.txt
  • : 任意字符
    grep "user:.*active" log

组合命令实战案例

案例 1:分析 Nginx 日志

# 统计每小时请求量
awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c
# 提取 500 错误请求的客户端 IP
grep " 500 " access.log | awk '{print $1}' | sort -n | uniq -c

案例 2:批量重命名图片

find . -name "*.JPG" -exec rename 's/\.JPG$/.jpg/' {} \;

案例 3:清理临时文件

find /tmp -type f -user $(whoami) -mtime +7 -exec rm -f {} \;

注意事项

  1. 权限控制
    使用 sudo 访问受限目录:
    sudo grep "error" /var/log/auth.log
  2. 防误删风险
    执行 rm 前用 echo 预览:
    find . -name "*.tmp" -exec echo "Deleting: {}" \;
  3. 正则兼容性
    • 基础正则(BRE):grep 默认
    • 扩展正则(ERE):grep -Eegrep
    • Perl 正则(PCRE):grep -P
  4. 大文件处理
    lesstail -f 避免内存溢出

掌握 Linux 文件过滤技术可提升 10 倍运维效率,关键步骤:

  1. 文件名过滤 → find / 通配符过滤 → grep / awk
  2. 流处理 → sed / 管道组合

权威参考来源

  • GNU Coreutils 官方文档:https://www.gnu.org/software/coreutils/
  • Linux man 命令手册(终端输入 man grep / man find
  • POSIX 正则表达式标准:IEEE Std 1003.1-2017
  • 《Linux命令行与Shell脚本编程大全》(Richard Blum, Christine Bresnahan 著)

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9319.html

(0)
酷番叔酷番叔
上一篇 2025年7月30日 18:57
下一篇 2025年7月30日 19:20

相关推荐

  • Linux系统如何查看守护进程的运行状态?具体步骤和命令有哪些?

    在Linux系统中,守护进程(Daemon)是后台运行的特殊进程,通常独立于终端,负责提供系统服务或执行周期性任务,如systemd、nginx、sshd等,查看守护进程的状态、运行情况是系统管理和故障排查的基础操作,本文将详细介绍Linux下查看守护进程的多种方法及相关命令的使用技巧,使用ps命令查看守护进程……

    2025年8月29日
    13500
  • 如何在Linux系统中查询用户组的详细信息及成员?

    在Linux系统中,组(Group)是权限管理的基本单位,通过将用户划分到不同组,可以实现对文件、目录等资源的批量权限控制,查询组信息是系统管理和日常运维中的常见需求,本文将详细介绍Linux系统中查询组的多种方法,包括基础命令、文件查看及场景化应用,帮助用户快速定位所需组信息,基础查询命令:直接获取用户所属组……

    2025年10月3日
    12800
  • Linux系统如何修改hosts文件?域名解析配置步骤详解

    在Linux系统中,hosts文件是一个本地DNS解析工具,用于将域名映射到特定的IP地址,其作用优先于系统的DNS服务器,通过修改hosts文件,可以实现本地域名解析、屏蔽广告网站、测试环境配置等功能,以下是详细的修改步骤及注意事项,hosts文件的位置与作用hosts文件通常位于系统根目录下的/etc/ho……

    2025年8月23日
    13600
  • 如何从基础开始系统学习Linux脚本文件的编写步骤与方法?

    Linux脚本文件是Linux系统中用于自动化任务、批量处理数据和简化重复操作的重要工具,通过将一系列命令组合在一起,实现高效执行,编写Linux脚本需要掌握基本语法、命令使用和调试技巧,以下是详细步骤和注意事项,环境准备在编写脚本前,需确保系统已安装bash解释器(Linux默认自带),创建脚本文件时,通常以……

    2025年9月26日
    10500
  • Linux如何编译程序?具体步骤和所需命令有哪些?

    在Linux系统中编译程序是开发过程中的核心环节,无论是简单的脚本还是复杂的项目,都需要通过编译将源代码转换为可执行的二进制文件,本文将详细介绍Linux环境下编译程序的完整流程,从环境准备到最终执行,涵盖单文件、多文件编译,以及Makefile的使用、常用编译选项和常见错误处理等内容,编译环境准备编译程序前需……

    2025年9月24日
    10900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信