ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Linux四剑客find+grep+sed+awk
[打印本页]
作者:
半亩花草
时间:
2023-3-10 00:48
标题:
Linux四剑客find+grep+sed+awk
find,grep,sed,awk
目录
find,grep,sed,awk
1.find【擅长在目录下找文件】
1.1 常用查询选项option
1.2 根据时间戳进行搜索
1.3 对查找到的文件如何操作
1.4 xargs
1.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:
可以将一个命令的输出作为参数发送给另一个命令。
<strong>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4