当前位置:   article > 正文

Linux高级命令find,grep,sed,awk_linux全局搜索关键字

linux全局搜索关键字

find,grep,sed,awk

  • 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'
  • 1
  • 2

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

# 例如:查当前路径下,属于sichuan的文件:
$ find . -user sichuan
  • 1
  • 2

-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
  • 1
  • 2

-size: 根据文件大小匹配

  • -n  小于 大小为 n 的文件
  • +n  大于 大小为 n 的文件
# 查找 /ect 目录下,小于 10000 字节的文件
$ find /etc -size -10000c
# 查找 /etc 目录下,大于 1M 的文件
$ find /etc -size +1M
  • 1
  • 2
  • 3
  • 4

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

# 从/etc 的第三级子目录开始搜索。
$ find /etc -mindepth 3 -name '*.conf'
  • 1
  • 2

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

#在 /etc 中搜索符合条件的文件,但最多搜索到2级子目录。  
$ find /etc -type f -name '*.conf' -size +10k -maxdepthc 2
  • 1
  • 2

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

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

# 匹配当前目录下,所有.txt和.pdf文件,用\转意
$ find ./ -regex ".*\(\.txt\|\.pdf\)$"
  • 1
  • 2

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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 \;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

逻辑运算符

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

-o:或

-not | ! 非

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

#找出/home下不是以.txt结尾的文件
$ find /home ! -name "*.txt"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.4 xargs

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/628072
推荐阅读
相关标签