在linux中,文件查找可以用find命令及locate命令来实现。
locate:属于非实时,模糊匹配的查找,查找时根据全系统文件数据库进行;
find:属于实时查找,可以精确并且支持众多查找标准进行文件查找;查找时遍历目录中的所有文件完成查找,速度慢。
1、find命令的一般形式为:
find 查找路径(pathname) 查找标准[-options] 处理运作[-print -exec...]
查找路径:默认为当前所在目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示
2、命令参数:
pathname:即所查找的目录路径
-print :find命令将匹配的文件输出到标准输出(显示)
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为 'command' { } ;,注意{ }和;之间的空格。
-ok : 和-exec的作用相同,只是以一种更为安全的模式来执行该参数所给出的shell命令,在执行每个命令之前,都会给出提示,让用户来确定是否执行。
3、find命令选项
-name :对文件名作精确匹配
-iname : 文件名匹配时不区分大小写
-regex :基于正则表达式进行文件名匹配
-user : 根据属主查找
-group : 根据属组查找
-uid UID: 根据UID查找
-gid GID: 根据GID查找
-nouser:查找没有属主的文件
-nogroup: 查找没有属组的文件
-type 以文件类型来查找
f: 普通文件
d:目录文件
c:字符设备文件
b:块设备文件
l:符号链接文件
p:管道文件
s:套接字文件
例如:find . -type f -print
即查找当前目录下的普通文件并输出到标注输出
-size 以文件大小来查找
-mtime # : 查找一段时间内被修改文件数据的文件(天数)
-ctime # :查找一段时间内被改变文件状态的时间(天数)
-atime # :查找一段时间内被访问的文件(天数)
-mmin # :(分钟)
-cmin
-amin
后面要跟上+#,表示比这段时间以上
后面要跟上-#,表示在一段时间之内 (#代表数字)
例如 find . -name "*.conf" -mtime +5 -print { } ;
即:查找当前目录下文件名后缀为.conf且在5天以前被修改的文件
-perm 按权限查找
MODE 精确匹配权限
/MODE:任意一位匹配即满足条件
-MODE:文件权限能完全包含此MODE时才能符合条件
例如:find . -type f -perm 644 -exec ls -l { } ;
即:查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件并显示出来