ind命令的格式
find pathname -options [ -print -exec -ok ...]
pathname
-print
-exec
-ok
find命令的选项
-name
-perm
-prune
-user
-group
-mtime -n +n
-n 表示从此刻算起,文件的更改是在n天以内
+n 表示文件的更改时间是在n天以前
find命令还有-atime和-ctime选项,和-mtime选项的时间规定类 似
-nogroup
-nouser
-newer file1 ! file2
-type
b:表示块设备文件 block
d:表示目录 directory
c:表示字符设备文件 char
p:表示管道文件 pipe
l:表示符号链接文件 link
f:表示普通文件 file
-depth
-fstype
-mount
-follow
-cpio
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
find示例:
1、在logs目录下查找更改时间在5日以前的文件并删除它们
find /logs -mtime +5 -exec rm {} \;
2、在当前目录中查找以.log结尾、更改时间在5日以上的文件,并删除,但在删除前给出提示
find . -name “*.log” -mtime +5 -ok rm {} \;
3、先用find命令匹配所有文件名为”passwd*”的文件,然后执行grep看看这些文件中是否存在一个sam的字符串
find / -name "passwd*" -exec grep "sam" {} \;
4、查找当前用户主目录下的所有文件
find ~
5、查找当前目录下644权限的文件
find . -perm 644
6、查找系统当中所有长度为0的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls -l {} \;
7、查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前进行提示
find /var/log -type f -mtime +5 -ok rm {} \;
8、查找当前目录中所有属于root组的文件
find . -group root -exec ls -l {} \;
9、find命令将列出目录中访问时间在7日以内且含有数字后缀的admin.log文件
find . -name "admin.log[0-9]*" -atime -7 -exec ls -l {} \;
用xargs来配合find工作
在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对传递给exec的命令长度是有限制的,这样,在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是”参数列太长”或”参数列溢出”。这就是xargs命令的用户所在,特别是与find命令一起使用
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它就可以先处理最先获取的那一部分文件,然后是下一批,并且如此继续下去。
查找root下面的每个文件,然后使用file查看文件的类别
find /root/ -type f | xargs file
查找root下面的777权限的文件,如果找到,都改为644权限
find /root -perm 777 | xargs chmod 644
查找系统中的所有文件,并过滤出文件中带有rmt的文件
find / -type f | xarfs grep rmt
grep -rl rmt /
更详细强大的find实例
一、使用name选项
1、在当前目录及子目录中查找所有的*.txt文件
find . -name "*.txt"
2、在当前目录及子目录中查找一个大写字母开头的文件
find . -name "[A-Z]*"
3、想在/etc目录中查找文件名以host开头的文件
find /etc -name "host*
4、查找$HOME目录中的文件
find ~
5、想要让系统高负荷运行,从根目录下面查找所有文件
find / -name "*"
6、在当前目录中查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件
find / -name "[a-z][a-z][0-9][0-9].txt"
二、使用perm选项
找出当前文件夹下权限为755的文件
find . -perm 755
三、使用user和mount选项
1、在宿主目录下查找属主为sam的文件
find ~ -user sam | xargs ls -l
2、查找已经删除用户以前的文件
find / -nouser sam
四、按照更改时间或访问时间等查找文件
-:限定更改时间在距今n日以内的文件
+:限定更改时间是在n日以前的文件
1、在根目录下查找更改时间为最近5日的文件
find / -mtime -5
2、在根目录下查找更改时间为3日以前的文件
find / -mtime +3
五、查找比某个文件新或旧的文件
1、查找比/root/a/a文件新的文件
find / -newer /root/a/a
2、查找比wanglei文件新的文件
find / -newer wanglei
在进行系统维护时,我们经常遇到一种情况,即发现磁盘在不停地发生写现象,这时候我们要定位这个正在写的文件,可以选择建立一个文件,比如test,然后用以下命令找出这个频繁写磁盘的文件(最好带上一些限制大小的参数来精确定位)
touch new1
touch new2
find / -newer new1 -o -path "/proc" -prune
找出比new1新的文件,由于/proc目录中的文件一直在变化,所以可以排除
六、使用type选项
1、在/etc目录下查找所有的目录
find /etc -type d | xargs file
2、在当前目录下查找除目录以外的所有类型的文件
find /etc ! -type d | xargs file
3、在/etc/目录一下查找所有的符号链接文件
find /etc -type l | xargs file
八、使用size选项
dd if=/dev/zero of=/root/100M bs=100M count=1
dd if=/dev/zero of=/root/10M bs=10M count=1
dd if=/dev/zero of=/root/30M bs=30M count=1
1、查找当前目录下大于5M的文件
find . -size +5M
2、查找当前目录下大与20M的文件
find . -size +20M
3、查找当前目录下大与40M的文件
find . -size +40M