4. Linux系统——文件查找过滤

一、查找文件

# find 目录 查找条件

1. 条件的写法

  • 按文件名称
[root@martin-host ~]# find /etc/ -name "*.conf"

[root@martin-host ~]# find /etc/ -name "*.conf" | wc -l
465

-iname, 忽略大小写
[root@martin-host ~]# find /dev/ -iname "*sd*" 
  • 按文件大小查找
[root@martin-host ~]# find /etc/ -size +2000k

[root@martin-host ~]# find /etc/ -size +5M 
  • 按文件类型
f: 文件	d:目录		b:块设备文件		c:字符设备文件	l:软链接 
[root@martin-host ~]# find /boot/ -type f  

[root@martin-host ~]# find /dev/ -type b 

[root@martin-host ~]# find /etc/ -type l | wc -l 
  • 按文件修改时间
// 一周内
[root@martin-host ~]# find /etc/ -mtime -7 

// 一个月前
[root@martin-host ~]# find /boot/ -mtime +30 
  • 按文件创建时间
[root@martin-host ~]# find /opt/ -ctime -7 
  • 多条件查找
[root@martin-host ~]# find /etc/ -type f -a -name "*.conf" -a -size +30k

[root@martin-host ~]# find /var/log/  -name "*.log" -a -ctime -7 

2. 执行操作

# find 目录 查找条件 -exec 命令 \;
[root@martin-host ~]# find /opt/ -name "*.sql" -exec rm -rf {} \; 

[root@martin-host ~]# find /boot/ -size +20M -exec ls -lh {} \;

[root@martin-host ~]# find /boot/ -size +20M -exec du -h {} \; 

[root@martin-host ~]# find /boot/ -size +20M -exec cp {} /tmp/ \; 

二、文本排序、去重

1. 去重

# uniq 文件
[root@martin-host ~]# uniq /opt/file01
aaaa
bbbb

// -c 按行计数
[root@martin-host ~]# uniq -c /opt/file01 
      3 aaaa
      2 bbbb

2、排序

# sort [选项] 文件
[root@martin-host ~]# sort /opt/file01 | uniq
aaaa
bbbb
// -n 按自然数大小排序
[root@martin-host ~]# sort -n /opt/file02 
// -r 倒序,默认为升序 
[root@martin-host ~]# sort -n -r /opt/file02 
// -k2 按每行第2列排序
[root@martin-host ~]# sort -k2 -n /opt/file02 

// -t 指定行分隔符,默认为空白 
[root@martin-host ~]# sort -t, -k2 -n /opt/file02 
// -h, 按照计算机K,M, G单位排序
[root@martin-host ~]# sort -h /opt/file02

三、grep 文本过滤

使用格式:

# grep [选项] "PATTERN" 文件名称 文件名称 
PATTERN:条件
默认行为: 会显示一整行内容

1、条件的写法

[root@martin-host ~]# grep "root" /etc/passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@martin-host ~]# ifconfig ens33 | grep "netmask" | awk '{print $2}'
192.168.140.135

[root@martin-host ~]# netstat -antp | grep "tcp"
  • [0-9] [a-z] [A-Z] [a-zA-Z] [0-9a-zA-Z] [rmt] 任意单个
[root@martin-host ~]# grep "[0-9]" /etc/fstab

[root@martin-host ~]# grep "[A-Z]" /etc/fstab
  • ^string, 以string开头
[root@martin-host ~]# grep "^#" /etc/fstab 

[root@martin-host ~]# free -h | grep "^Mem"

[root@martin-host ~]# grep "^[rmk]" /etc/passwd 
  • string$ 以string结尾
[root@martin-host ~]# grep "bash$" /etc/passwd 
  • ^$ 空行
[root@martin-host ~]# grep "^$" /etc/fstab | wc -l

2、grep常用选项

  • -i 忽略大小写
[root@martin-host ~]# grep -i "error" /var/log/messages 
  • -v 反向过滤,取反
[root@martin-host ~]# grep -v "^#" /etc/fstab 

-e 多条件过滤

[root@martin-host ~]# grep -e "^$" -e "^/" /etc/fstab 

[root@martin-host ~]# netstat -tunlp | grep -e "^tcp" -e "^udp" 
  • -n 显示行号
[root@martin-host ~]# grep -n "^[rmk]" /etc/passwd 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值