8.重定向,文件解压缩,find文件查找
2021-07-17 本文已影响0人
划水健将
1.重定向(掌握)
2.文件压缩(掌握)
3.find查找(掌握)
1.重定向
1.1掌握> >> 2>或者2>> &> 的使用
> 追加
>> 覆盖
2> 错误覆盖
2>> 错误追加
&> 混合覆盖
&>> 混合追加
1.2 了解其他表达方式
待补充
1.3 xargs,tee的使用熟练掌握xargs,了解tee即可
xargs:将命令左侧的输出传递给右侧命令的输入
例:find /tmp -name ".log" | xargs rm -rf
#将find查找的内容传递给rm -rf 删除 xargs 执行效率比find的exec高
tee:三通管道,将前面命令的输出到文件中或者屏幕,后面能正常接受前面的输出,不影响后面的处理
2.文件压缩,gzip,zip,tar
2.1 gzip对文件进行压缩
压缩:gzip file
解压:gzip -d file.gz
查看:zcat file.gz #类似windows压缩包双击查看
2.2 zip 对文件或者目录进行压缩
压缩:zip -r etc.zip /etc # -r 递归打包
解压:unzip etc.zip
查看:unzip -l etc.zip
2.3 tar对文件或目录归档或者压缩,大小不一样、
压缩:tar czf name.tar.gz /etc # 加z就是压缩,不加就是归档
解压:tar xf name.tar.gz -C /dir # -C 解压到指定目录
查看:tar tf name.tar.gz
排除:tar czf name.tar.gz --exclude=/etc/hosts --exclude=/etc/hostname /etc
3.find查找
3.1 find可以通过文件类型、名称、时间、大小、用户、权限、逻辑(a o !) 进行查找。
3.1.1 find通过文件类型查找
find /tmp/ -type d -empty | xargs rm -rf
#查出空目录删除
find / -type f
# f
# d
# l
# b
# ....
3.1.2 find 通过名字查找
find / -type f -name "ifconfig-*"
#从/查找以ifconfig-开头的文件
3.1.3 find 通过时间查找
find /var/log/ -type f -mtime +7 -name "*.log"| xargs rm -rf
# -mtime -7 七天以内的文件,包括当天的
# -mtime 7 第七天的文件,不包括当天
# -mtime +7 七天之前的文件,不包括当天的文件
# -mmin +7 列出七分钟前发生的文件
# -mmin -7 列出七分钟内发生文件
# 图例:
find-mtime.png
-mtime案例:备份6个月之前的日志,并将文件删除,只保留压缩文件
find /var/log/ -type f -a -name "xxapp*.log" -mtime +180 | xargs tar czf `date +%F`ago-180
find /var/log/ -type f -a -name "xxapp*.log" -mtime +180 | xargs rm -rf
#暂时没想到比较好的方法,用了个比较笨拙的
-mmin案例:列出/usr/bin/目录下最近10分钟有那些命令文件发生变化
find /usr/bin -type f -a -mmin -10
#主要就是查看最近文件是否被修改
3.1.4 find 通过文件大小查找
# -size +5M 大于5M的文件
# -size -5M 小于5M的文件
# -size 5M 等于5M的文件
案例1:查找系统中大于5M的文件
find / -type f -a -size +5M | xargs ls -lh
案例2:查找var/log/备份日志文件超过100M,且超过半年以上,找到并删除。
1)修改到半年前(设置系统时间)然后模拟创建一个超过100M的文件
dd if=/dev/zero of=/var/log/app.log count=4 bs=50M
#dd if 从/dev/zero 取数据
#of 放到那个文件
#count 拿几次
# bs 每次拿多少
tar cf app.log.tar.gz /var/log/app.log #采用归档打包。压缩也行,压缩后大于100M即可
find /var/log/ -size +100M -a -mtime +180 | xargs rm -rf
3.1.5 用户,权限略,随用随查
3.1.6 逻辑a o !
-a = 与(并且) 满足前后两个条件
-o = 或 (或者) 满足一个条件几个
-not|! 取反
案例:找出/tmp目录下,属主不是root,且文件名不以f开头的文件
find /tmp/ -type f -a ! -name "f*" -a ! -user root
3.1.7 find找到文件后的处理动作
find /var/log/ -type f -name "*app.log" 加下列的处理动作
#-delet #删除
#-exec rm -f {} \; #删除
#-exec cp {} /tmp \; #cp 到、tmp
#| xargs rm -rf #删除 建议使用,效率高
find /tmp/ -type f | xargs grep -R "关键字"
#| xargs grep -R "关键字" -R递归筛选