Linux查找文件和内容(grep, find)

本文介绍了Linux中查找文件和内容的两个重要工具:grep和find。grep支持正则表达式,可以显示行号、不区分大小写,并能进行and、or、not逻辑操作。find命令则允许通过shell通配符查找文件,结合xargs可以实现更复杂的操作。通过指定参数,find可以限制查找深度并提供文件详细信息。
摘要由CSDN通过智能技术生成

grep

  • 格式: grep 参数 查找内容 文件名
    • 没有文件名默认为标准输入(一般来自管道)
      • 如果有xargs,则来自管道的输入视为文件名
        • 不能操作有空格的文件名
      • 否则视为要查找的文本
  • 同时查找多个文件
    • 文件名采取正则形式
      • grep 123 *.txt
    • find配合xargs
      • find -name *.txt | xargs grep 123
  • 参数
    • -E 支持正则
    • -n 显示行号
    • -i 不区分大小写
    • -A n/ -B n显示匹配行前/后n行内容
      • n最大为18
    • -r 不局限与文件,在目录下递归查找含有内容的文件
    • -l 只显示匹配的文件名,不显示内容
    • -L 只显示不匹配的文件名
    • -w 只匹配整个单词,而不是字符串的一部分
    • ^$ 分别标注行首和行尾
    • -v 反向匹配(可用来排除文件或内容)
# 递归查找当前目录,不区分大小写,显示行号
grep -irn  .
# 只显示匹配的文件名,不显示内容
grep -lr 123 .
# 只显示不匹配的文件名
grep -Lr 123 .
# 显示匹配 pattern1 或匹配 pattern2 的行
grep -E "123|456" file
# 显示既匹配 pattern1 又匹配 pattern2 的行
grep 123 file | grep 234 | grep 345
# 只匹配整个单词,而不是字符串的一部分
grep -w magic file
# 只匹配 hello开头的,而不是hello在中间的
grep "^hello" file
# 只匹配hello行,而不是行中含hello
grep "^hello\$" file
# 不匹配txt和out文件
grep 123 . | grep -v *.txt | grep -v *.out
grep 123 . | grep -Ev "\.txt|\.out"

grep的and, or, not 逻辑

# and 逻辑
grep A file | grep B file
# or 逻辑
grep -E A|B file
# not 逻辑
grep -v A file

find

  • 格式: find 路径 参数
  • -a 表示and, -o 表示or, -not 表示not
  • -name只支持shell通配符,如果需要支持正则,需要-regex参数
  • -ls参数显示详细文件详细,而不只是文件名
  • -maxdepth <num>限制查找深度
# 根据名字
find path -name filename

# 根据修改时间
# c代表修改,a代表访问
# time代表天数,min代表分钟
# -n 代表n分钟/天内, +n 代表n分钟/天前
find path -ctime -10 
find path -amin +5

# 查找比某文件更新的文件
find path -newer filename

# 根据文件类型 -type
# d 代表目录, f 代表普通文件, l 代表软连接
find path -type d

# 根据文件大小 -size
# +n 代表大于n字节,-n代表小于,都不加代表等于
# 常用单位有k, M, G
find path -size +1024M
find path -size 0

# 查找空文件或文件夹 -empty
find path -empty

# 多条件查找
# -a 表示and, -o 表示or, -not 表示not
find . -size +0 -a -size -512

find . -type d | xargs ls
find .. -size +0 | grep -E "*.txt"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值