Linux文件、文件内容搜索大全(find,grep命令)

1、根据 文件或目录名称 搜索

1、精准搜索,名字必须为 init 才能搜索的到

find /etc -name init

2、精准搜索,名字必须为 init或者有字母大写也能搜索的到

find /etc -iname init 

2、模糊搜索,以 init 结尾的文件或目录名

find /etc -name *init 

2、模糊搜索,? 表示单个字符,即搜索到 init___

find /etc -name init???

2、根据 文件大小 搜索

1、 在根目录下查找大于 100M 的文件 (这里 +n 表示大于,-n 表示小于,n 表示等于1 数据块 ==512 字节 == 0.5KB,也就是1KB等于2数据块 100MB == 102400KB==204800数据块)

find / -size +204800

3、根据 所有者和所属组 搜索

1、在home目录下查询所属组为 root 的文件

find /home -group root 

2、在home目录下查询所有者为 root 的文件

find /home -user root

4、根据 时间属性 搜索

1、以 production.log-2013前缀的文件 查找2013-08-082013-09-01号之间的文件

find /log/ -name 'production.log-2013*' -newermt '2013-08-08' ! -newermt '2013-09-00' 

2、 2011/09/08 12:00 时间开始找一天內的,会列出 2011/09/07 12:00 ~ 2011/09/08 12:00 时间內的文件 ,找出 3 天”以前”被改动过的文件 (前第三天以前 → 2011/09/05 12:00 以前的文件) (> 72 小时)

find /var/log/ -mtime +3 -type f -print

3、找出 3 天內被改动过的文件 (2011/09/05 12:00 ~ 2011/09/08 12:00 內的文件) (0 ~ 72 小时內)

find /var/log/ -mtime -3 -type f -print

4、找出前第 3 天被改动过的文件 (2011/09/04 12:00 ~ 2011/09/05 12:00 內的文件) (72 ~ 96 小时)

find /var/log/ -mtime 3 -type f -print 

5、找出第 3 天被改动过的文件 (也可以这样写)

find /var/log/ -mtime +2 -mtime -4 -type f -print

5、根据 文件类型或i节点 搜索

1、 查找文件

find ./ -type f

2、查找目录

find ./ -type d 

6、组合条件 搜索

1、 -a 表示两个条件同时满足(and)
2、 -o 表示两个条件满足任意一个即可(or)
3、把找到的文件cp到指定的文件夹下

find /data/files/ -name "*.html.*" -newerct '2019-08-07 00:00:00' ! -newerct '2019-08-08 00:00:00' -exec cp {} /home/files/20190808 \;

7、文件内容搜索(grep || find)

7.1、find
1、查找文件中的Summer

find /www/ -name '*.php' |xargs grep 'Summer'

2、同时查找多个文件并复制(exec用法)

find ./file -regex '.*file.txt|.*file1.txt' -exec cp -r {} /home/file \; 

3、查找目录下的所有文件中是否含有某个字符串
-r 是递归查找 -n 是显示行号 * : 表示当前目录所有文件,也可以是某个文件名

 find -type f -name '*.php'|xargs grep 'message'

7.2、grep (or,and,not)

7.2.1 grep -r “String” ./
查找当前文件夹中的所有文件内包含String的内容的行数 -r 是递归查找 -n 是显示行号 -R 查找所有文件包含子目录 -i 忽略大小写

7.2.2、or操作
1、 使用 |
如果不使用grep命令的任何选项,可以通过使用 ‘|’ 来分割多个pattern,以此实现OR的操作。

grep 'pattern1\|pattern2' filename 
grep 'Tech\|Sales' employee.txt

2、使用选项 -E
grep -E 选项可以用来扩展选项为正则表达式。 如果使用了grep 命令的选项-E,则应该使用 | 来分割多个pattern,以此实现OR操作。

grep -E 'pattern1|pattern2' filename 
grep -E 'Tech|Sales' employee.txt

3、使用egrep
egrep 命令等同于‘grep -E’。因此,使用egrep (不带任何选项)命令,以此根据分割的多个Pattern来实现OR操作.

egrep 'pattern1|pattern2' filename 
egrep 'Tech|Sales' employee.txt

4、使用选项 -e
使用grep -e 选项,只能传递一个参数。在单条命令中使用多个 -e 选项,得到多个pattern,以此实现OR操作。

grep -e pattern1 -e pattern2 filename 
grep -e Tech -e Sales employee.txt

7.2.3、and操作

1、使用 -E 'pattern1.*pattern2’
grep命令本身不提供AND功能。但是,使用 -E 选项可以实现AND操作。

grep -E 'pattern1.*pattern2' filename 
grep -E 'Dev.*Tech' employee.txt 
grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename 
grep -E 'Manager.*Sales|Sales.*Manager' employee.txt

2、使用多个grep命令

可以使用多个 grep 命令 ,由管道符分割,以此来实现 AND 语义。

grep -E 'pattern1' filename | grep -E 'pattern2' 
grep Manager employee.txt | grep Sales

7.2.4、Grep NOT操作
1、使用选项 grep -v
使用 grep -v 可以实现 NOT 操作。 -v 选项用来实现反选匹配的( invert match)。如,可匹配得到除下指定pattern外的所有lines。

grep -v 'pattern1' filename 
grep -v Sales employee.txt

7.2.5、联合使用
1、是…或者是…但是不是…(Manager或者Developer,但是不是Sales )

egrep 'Manager|Developer' employee.txt | grep -v Sales  

2、not in 是…或者是…但是不包含… (Manager或者Developer,但是不包含a,b,c)

egrep 'Manager|Developer' employee.txt | grep -v "a"|grep -v "b"|grep -v "c" ........
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值