find 命令详解

作者:Garany 发布于:2016-05-10 分类:破万卷书
基本格式:
find 【路径】 【-选项】 【-操作】
一、路径
1. ./ 当前目录
2. ~ 用户家目录
3 ./home 当前目录下的家目录
4. /home /home目录
5. /home/wang/ /home目录下的wang目录
二、选项
1.name选项:
使用文件名('filename')来匹配:可以和其他选项一起使用
# find ./ -name "[A-Z]*" -print
查找当前目录及子目录中文件名以一个大写字母开头的文件
# find /etc -name "host*" -print
查找/etc目录中以host开头的文件
2.perm选项:
使用文件权限来查找文件
# find ./ -perm 755 -print
当前目录下查找文件权限位为755的文件
# find ./ -perm -005
都匹配,如-007就相当于777,-005相当于555
3.prune选项:
查找文件时忽略某个目录。不能与-depth选项同用
# find /home -path '/home/wang' -prune -o -print
查找/home目录中不在wang子目录之内的所有文件
# find test \( -path test/test4 -o -path test/test3 \) -prune -o -print
避开多个文件夹。圆括号表示表达式的结合
# find test \(-path test/test4 -o -path test/test3 \) -prune -o -name "*.log" -print
查找某一确定文件,-name等选项加在-o 之后
4.user和nouser选项:
按文件属主查找文件
# find /etc -user wang -print
在/etc目录下查找文件属主为wang的文件
# find /home -nouser -print
查找/home目录中在/etc/passwd文件中没有有效帐户的文件
5.group和nogroup选项:
按文件所属组查找
# find /etc -group root -print
在/etc目录下查找属于root用户组的文件
# find / -nogroup-print
在根目录查找没有有效所属用户组的所有文件
6.mtime或atime选项:
按照更改时间来查找文件
# find / -mtime -5 -print
在系统根目录下查找更改时间在5天内的文件
# find /var/log -mtime +3 -print
在/var/log目录下查找更改时间在3天前的文件
7.newer选项:
查找比某个文件新或旧的文件
一般形式为:
newest_file_name ! oldest_file_name
其中,!是逻辑非符号
# find ./ -newer log2012.log -print
查找更改时间在比log2012.log文件新的文件
# find -newer log2015.log ! -newer log2016.log
查找更改时间比文件log2015.log新但比文件log2016.log旧的文件
8.type选项:
按照类型查找
# find /etc -type d -print
在/etc目录下查找所有的目录
# find ./ ! -type d -print
在当前目录下查找除目录以外的所有类型的文件
# find /etc -type l -print
在/etc目录下查找所有的符号链接文件
9.size选项:
按照文件长度来查找文件
文件长度既可以用块(block)来计量(只用数字表示即可),也可以用字节来计量(Nc)
# find ./ -size +1000000c -print
查找当前目录x下文件长度大于1 M字节的文件
# find /var/log -size 100c -print
查找/var/log下文件长度恰好为100字节的文件
# find ./ -size +10 -print
查找当前目录下长度超过10块的文件(一块等于512字节)
10.depth选项:
先匹配所有的文件,再在子目录中查找
# find / -name "666" -depth -print
从根目录开始先匹配所有的文件然后再进入子目录中查找一个名为666的文件
11.mount选项:
在当前的文件系统中查找(不进入其他文件系统)
# find ./ -name "*.TXT" -mount -print
查找目录中位于本文件系统中文件名以TXT结尾的文件
三、参数
1.-print 输出到标准输出,常省略
# find /etc -name "host*" -print
查找/etc目录中以host开头的文件,并打印
2.-exec 对匹配到的文件执行shell。语法 -exec 'command'{} \;
# find /var/log/ -type f -name 'mysql*.log' -exec rm -rf {} \;
查找/var/log目录下类型为普通文件的mysql日志,并且删除
3.-ok 与-exec作用相同,只不过是交互式操作
# find /var/log -mtime -3 -ok rm -rf {} \;
查找/var/log下的3天内的文件,以交互的方式删除
标签: linux find命令

我来说说