【Linux四剑客】find+grep+sed+awk()

  本篇文章为你整理了【Linux四剑客】find+grep+sed+awk()的详细内容,包含有 【Linux四剑客】find+grep+sed+awk,希望能帮助你了解 【Linux四剑客】find+grep+sed+awk。

  find,grep,sed,awk

  目录find,grep,sed,awk1.find【擅长在目录下找文件】1.1 常用查询选项option1.2 根据时间戳进行搜索1.3 对查找到的文件如何操作1.4 xargs1.5 常用find命令2.grep【擅长在文件中匹配文本】2.1 grep,cat,管道符配合使用2.2 grep,ps,管道符配合使用2.3 常用grep命令3.sed【擅长取行】3.1 sed 格式说明3.2 s 替换脚本命令3.3. g,w,p,a,i,c,y,q,r,f,d 脚本命令3.4 sed实例4.awk【擅长对行按要求切割】4.1 wak 格式说明4.2 awk 字段变量4.3 awk 脚本命令使用多个命令4.4 awk 从文件中读取程序4.5 BEGIN、END关键字4.6 awk 内置变量4.7 awk 自定义变量和赋值5.regex

  find:常用在目录下精确查找文件(最擅长找文件)

  grep:常用来做全局数据的查询定位(最擅长文本过滤)

  sed:常用来做行数据增删改查(最擅长取行)

  awk:常用来做列数据切分与提取(最擅长取列)

  1.find【擅长在目录下找文件】

  find 命令用来在指定目录下查找文件

  语法:find path -option

  进阶:find path -option [-print][ -exec command] {} \;

  注意:{} 表示查询的结果。

  1.1 常用查询选项option

  -name: 根据名称匹配

  -iname: 忽略大小写

  

# 例如:查找当前目录下以log为结尾的文件:

 

  $ find ./ -name *log

  

 

  -user: 根据所属与的组进行查询

  

# 例如:查当前路径下,属于sichuan的文件:

 

  $ find . -user sichuan

  

 

  -type: 根据类型进行查找

  f 文件 find ./ -type f

  d 目录 find . -type d

  c 字符设备文件 find . -type c

  b 块设备文件 find . -type b

  l 链接文件 find . -type l

  p 管道文件 find . -type p

  

# 例如:查当前路径下所有文件

 

  $ find ./ -type f

  

 

  -size: 根据文件大小匹配

  -n 小于 大小为 n 的文件

  +n 大于 大小为 n 的文件

  

# 查找 /ect 目录下,小于 10000 字节的文件

 

  $ find /etc -size -10000c

  # 查找 /etc 目录下,大于 1M 的文件

  $ find /etc -size +1M

  

 

  -mindepth n: 从第 n 级目录开始搜索

  

# 从/etc 的第三级子目录开始搜索。

 

  $ find /etc -mindepth 3 -name *.conf

  

 

  -maxdepth n: 表示至多搜索到第 n-1 级子目录。

  

#在 /etc 中搜索符合条件的文件,但最多搜索到2级子目录。 

 

  $ find /etc -type f -name *.conf -size +10k -maxdepthc 2

  

 

  -regex: 基于正则表达式匹配文件路径

  -iregex: 基于正则表达式匹配文件路径(忽略大小写)

  

# 匹配当前目录下,所有.txt和.pdf文件,用\转意

 

  $ find ./ -regex ".*\(\.txt\\.pdf\)$"

  

 

  1.2 根据时间戳进行搜索

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

  访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。

  修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。

  变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

  -mtime:根据文件更改时间查找,单位小时

  -n n 天以内修改的文件。

  +n n 天以外修改的文件。

  n 正好 n天 修改的文件。

  -mmin: 根据文件更改时间查找,单位分钟

  -n n 分钟以内修改过的文件

  +n n 分钟之前修改过的文件

  

# 查询 /etc 目录下30分钟之前修改过的文件。 

 

  $ find /etc -mmin +30

  # 查询 /etc 目录下30分钟之内修改过的目录。

  $ find /etc -mmin -30 -type d

  # 查询 /etc 目录下,5天以内修改 且以 conf 结尾的文件

  $ find /etc -mtime -5 -name *.conf

  #查询 /etc 目录下,10天之前修改,且属于 sichuan的文件

  find /etc -mtime +10 -user sichuan

  

 

  1.3 对查找到的文件如何操作

  -print: 打印输出。 默认的选项,即打印出找到的结果。

  -exec: 对搜索到的文件执行特定的操作,固定的格式为:-exec commond {} ; 注意:{} 表示查询的结果。

  

# 搜索 /etc 目录下的文件(非目录),文件以.conf结尾,且大于10k的文件 然后将其删除。

 

  $ find /etc -type f -name *.conf -size +10k -exec rm -f {} \;

  # 搜索条件同 例1 一样,但是不删除,只是将其复制到 /root/conf 目录下

  $ find /etc -type f -name *.conf -size +10k -exec cp {} /root/conf/ \;

  # 将 /data/log/ 目录下以.log 结尾的文件,且更改时间在 7 天以上的删除。

  $ find /data/log -name *.log -mtime +7 -exec rm -f \;

  

 

  -ok和 -exec 的功能一样,只是每次操作都会给用户提示。

  逻辑运算符

  -a:与 (默认情况查询条件之间都是 与 的关系)

  -o:或

  -not ! 非

  

#或

 

  $ find . \( -name "*.txt" -o -name "*.pdf" \)

  $ find . -name "*.txt" -o -name "*.pdf"

  #找出/home下不是以.txt结尾的文件

  $ find /home ! -name "*.txt"

  

 

  1.4 xargs

  xargs: 可以将一个命令的输出作为参数发送给另一个命令。

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: