在Linux中查找文件通常是使用whereis和locate。因为这两个命令是利用数据库查找数据,所以速度相当快。而find命令在查找中访问了硬盘,速度相对要慢。
whereis(寻找特定文件)
格式: whereis [-bmsu] 文件或目录名
参数: -b 只找二进制文件
-m 只找说明文件manual路径下的文件
-s 只找source源文件
-u 查找不在上述三个选项当中的其他特殊文件
locate:
格式:locate [ -i r ] keyword
参数: -i 忽略大小写差异
-r 后面可接正则表达式的显示方法
注意:
find:
格式 find pathname -options [-print -exec -ok ...]
1 与时间有关参数命:-atime , -ctime ,-mtime
以-mtime为例子: find -mtime n : n为数字,意义为在n天之前的“一天之内”被更改过的文件
find -mtime + n : 列出在n天之前(不包含n)被改过的文件名
find -mtime -n : 列出在n天以内(包含n)被改过的文件名
find -newer class:class是已经存在的文件,这个指令是列出比class还要新的文件名
例:寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出
find /etc -newer /etc/passwd
-newer用来分辨两个文件之间新旧关系很有用
2 与用户或用户组名有关的参数
-uid n : n为数字 ,这个数字是用户的账号ID,及UID。
-gid n : n为数字,这个数字是用户组名的ID,及GID。
-user name :name 为用户账号名称。
-group name :name 为用户组名称。
-nouser:查找文件的所有者不在/etc/passwd 的人
-nogroup:查找文件的所有用户组不存在于/etc/passwd 中的文件
3 与文件权限及名称有关的参数
-name filename : 查找文件名为filename的文件
-size [ +- ]SIZE :查找比size大或者小的文件。 size的单位有 c:代表byte k表示1024bytes
-type TYPE : 查找文件类型为TYPE 的
例: b - 块设文件。
d- 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件
-perm 按文件权限查找文件
其他操作
-exec command:command为其他命令 ,-exec后可再接其他命令
-print: 将结果打印到屏幕上,这个操作是默认的,并不需要我们自己输入。
参考书《鸟哥的Linux私房菜》基础学习篇第三版 7.5.2文件名的查找