MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Liunx查询文件位置或文件包含的指定字符串——grep/find

2025-01-15 13:43 huorong 精选文章 10 ℃ 0 评论
  • 查询文本文件特定字符串加 -a

不加报错——“Binary file (standard input) matches”

cat train.csv | grep "H5" -a

grep "被查找的字符串" 文件名 -a

grep "H5" /home/zxadmin/*.csv -a


-A n:显示匹配到的字符串所在的行及其后n行,after

-B n:显示匹配到的字符串所在的行及其前n行,before

-C n:显示匹配到的字符串所在的行及其前后各n行,context

cat train.csv | grep "H5" -a -A 4


-i :忽略大小写(ignore case)

-n :显示行号

-c:显示查找匹配的行数

-v 或 --invert-match : 显示不包含匹配文本的所有行。

-V 或 --version : 显示版本信息。


递归查找文件夹 /etc/acpi里,update的字符串

grep -r update /etc/acpi


正则表达式:

grep –e "正则表达式" 文件名


从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 "ERROR" 的行

find / -type f -name "*.log" | xargs grep "ERROR"


从当前目录开始查找所有扩展名为 .in 的文本文件,并找出包含 "thermcontact" 的行

find . -name "*.in" | xargs grep "thermcontact"

备注:

find用法

  • find -type 类型参数:f 普通文件 l 符号连接 d 目录 c 字符设备 b 块设备 s 套接字 p Fifo
  • 无参数查找:默认查找当前目录的文件,find 和find .查找的效果是一样的
  • 按照名字查找 find -name 文件名称
  • 按照名字查找忽略大小写find -iname 文件名
  • 按照文件的所属用户查询 find -user 用户名
  • 按照文件所属的文件组查询 find -group 组名称
  • find . -type f 时间戳

UNIX/Linux文件系统每个文件都有三种时间戳:

  1. 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
  2. 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
  3. 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间
  • 查询近两天访问的文件

find -atime -2

xargs用法:


xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:

find /sbin -perm +700 |ls -l #这个命令是错误的

find /sbin -perm +700 |xargs ls -l #这样才是正确的

Tags:linux 查看文件

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言