Linux运维利器–Find命令

Linux大全评论121 views阅读模式

Find命令总结

实时

精确

支持众多查找标准

遍历指定目录中的所有文件完成查找,速度相对慢;

 

find 查找路径 查找标准 查找到以后的处理运作

查找路径:默认为当前目录

查找标准:默认为指定路径下的所有文件

处理运作:默认为显示

 

匹配标准

-name 'FILENAME':对文件名作精确匹配

文件名通配:

*:任意长度的任意字符

?

[]

-iname 'FILENAME': 文件名匹配时不区分大小写

 

实例:

find ./ -name "*.conf"

find ./ -iname "MyC.c"    忽略大小写!

find . -perm 777

 

+++++++++++++++++++++++++++++++++++++++++++++++

-user USERNAME: 根据属主查找

-group GROUPNAME: 根据属组查找

 

-uid UID: 根据UID查找

-gid GID: 根据GID查找

 

-nouser:查找没有属主的文件

-nogroup: 查找没有属组的文件

 

实例:

1、查找/var目录下属主为root并且属组为mail的所有文件;

find /var -user root -group mail

 

2、查找/usr目录下不属于root,bin,或student的文件;

find /usr -not -user root -a -not -user bin -a -not -user student

find /usr -not \( -user root -o -user bin -o -user student \)

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-type

f: 普通文件

d: 目录

c:字符设备

b:块设备

l:软连接文件

p:管道文件

s:套节字

 

实例:

find /etc -type f

find /etc -type d

find ./ ! -type d    #在当前目录下查找除目录以外的所有类型的文件

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-size [+|-]

表示文件大小,+表示大于某个数,-表示小于某个数,c表示单位是字节,你可以将c换成k,M,G.

 

实例:

find ./ -size 0 -exec rm {} \;

find ./ -size 0 | xargs rm -f

find . -size +1000000c  #在当前目录下查找文件长度大于1 M字节的文件

find /home/apache -size 100c  #在/home/apache目录下查找文件长度恰好为100字节的文件

find . -size +10    #在当前目录下查找长度超过10块的文件(一块等于512字节)

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

文件状态判断

 -mtime: 指定时间文件内容被修改过

 -ctime: 指定时间文件权限被修改过

 -atime: 指定时间文件被读取过

 

1、找出3天“以前”被修改过的文档

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

 

2、找出3天“内”被修改过的文档

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

 

3、找出第3天被修改过的文档.

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

或这样写:

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

 

注:

访问过用amin,修改过用mmin,文件状态改变过用cmin

精确到分钟的用amin,mmin,cmin,精确到天的用atime,mtime,ctime

 

find /logs -type f -mtime +5 -exec rm {} \;  #在/logs目录中查找更改时间在5日以前的文件并删除它们

find / -mtime -5 -print  #在系统根目录下查找更改时间在5日以内的文件

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-mount:在查找文件时不跨越文件系统mount点,这样限制在本文件系统!

这个用的不多就不举实例了!

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-prune

find /apps -path "/apps/bin" -prune -o -print    #在/apps目录下查找文件,但不希望在/apps/bin目录下查找。在用这条命令时,要么各目录最好用绝对路径,要么前后对应,如:find test/  -path "./test/a" -prune -o -print  这种方式是不对的.

 

-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-maxdepth:

find . -maxdepth 1 -name fred  #在当前目录下查找

find . -maxdepth 2 -name fred  #在当前目录的下一级目录查找

find -mindepth 3 -maxdepth 5 -name passwd

[root@fb13 /]# find . -maxdepth 3 -name test

./b/test

./usr/bin/test

./a/test

 

find /project -maxdepth 2 \( -path "/project/exapi/log" -o -path "/project/exapi/backup" \) -prune -o -print |grep "/project/exapi/" |xargs tar zcf /backup/exapi_`date +%F`.tar.gz

 

++++++++++++++++++++++++++++++++++++++++++++++++++++

使用混合查找方式: -a -o -not

find /tmp -size +10000000c -a -mtime +2

企鹅博客
  • 本文由 发表于 2020年8月14日 07:06:35
  • 转载请务必保留本文链接:https://www.qieseo.com/217607.html

发表评论