一、Gnome Search Tool
1. 位置―>搜索文件...
2. 用于按以下条件进行搜索的图形工具
名称、内容、所有者/组、大小、修改时间
二、locate(查询数据库中的文件)
1. 查询路径(指向系统中的文件)的预构建数据库
数据库必须由管理员进行更新
将搜索完整路径,而不是只搜索文件名
2. 只能搜索用户具有读取和执行权限的目录
locate将查询文件数据库,以查找符合搜索条件的文件。该数据库必须由管理员运行updatedb命令生成。由于过期的数据库毫无用处,因此管理员也可以通过在DAILY_UPDATE中启动/etc/updatedb.conf选项使数据库自动更新。
locate数据库仅存储文件名和路径信息,因此locate命令仅根据这些信息进行搜索。但是,locate可以在搜索该数据库时使用正则表达式提供信息,以执行模糊搜索。
三、locate示例
1. locate passwd
搜索在名称或路径中包含“passwd”的文件
2. 有用的选项
-i 用于执行不区分大小写的搜索
-n X 仅列出前X个匹配项
四、find
1. Find [dir1...] [criteria...] [action...]
2. 实时搜索目录树
速度较慢,但比locate更准确
如果未给定任何起始目录,则会使用CWD
如果未给定任何条件,则所有文件均匹配
3. 可以针对找到的文件执行命令
4. 可以对条件应用布尔逻辑
5. 只能搜索用户具有读取和执行权限的目录
五、基本find示例
1. find -name 文件名,当前目录下
dir -iname 文件名(不区分大小写),dir目录下
dir -user 用户名
dir -group 组名
六、find和逻辑运算符
1. 默认情况下,条件通过AND连接到一起
2.也可以用OR连接或者用-o或-not求反
3.可以使用括号来确定逻辑顺序,但在bash中必须忽略
find -user joe -not -group joe 当前目录下拥有者是joe,拥有组不是joe
find -user joe -o -user jane 当前目录下拥有者是joe或者拥有者是jane
find -not \( -user joe -o -user jane \) 当前目录下拥有者不是joe或者拥有者不是jane
运算符AND比OR优先级高,而NOT在所以运算符中优先级最高。
七、find和权限
1. 可以按名称或ID匹配所有权(user,group,uid,gid)
find / -user joe -o -uid 500
2. 可以匹配八进制或符号权限(0类似于通配符,表示忽略)
find -perm 755 权限正好为755
find -perm +222 任意一个人有2的权限
find -perm -222 所有人有2的权限
find -perm -002 其他人有2的权限
前面带有“+”的数字形式权限将匹配具有该权限集至少一位(用户、组、其他人)的文件。权限前面带有“-”表示该位的全部三个实例都必须存在。
八、find和数字条件
1. 许多find条件采用数字值
find -size 10M 大小等于10M
find -size +10M 大小超过10M
find -size -10M 大小不足10M
2. 还可以使用其他修饰符,例如k代表KB,G代表GB等
find可以搜索系统以查找符合特定数字条件(例如文件大小[-size]、文件的链接数[-links]、上次更改文件数据的日期[-mtime]、上次更改文件元数据的日期[-ctime]、或上次读取文件的日期[-atime])的文件。
九、find和访问时间
1. find可以按索引节点时间戳匹配
-atime 上次读取文件时
-mtime 上次更改文件数据时
-ctime 上次更改文件数据或元数据时
2. 给定值以天数为单位
find /tmp -ctime +10 文件更改超过10天前
3. 可以使用分钟值
-amin -mmin -cmin
find /etc -amin -60 60分钟内读取的文件
甚至可以使用-anewer、-cnewer、-newer匹配与其他文件时间戳相关的访问时间,这样做将测试修改时间。
find -newer 1.txt 将列出其修改时间早于1.txt的所有文件,-not可对其求反。
十、有find执行命令
1. 可以针对找到的文件执行命令
命令前必须带有-exec或-ok,-ok将在对每个文件执行之前提示
命令必须以Space\; 结尾
可以使用{}作为文件名占位符
find -size +100M -ok mv {} /tmp/ \;
带有-exec或-ok的命令必须以“\;”结尾的原因在于,find使用“;”作为分隔符。不幸的是,“;”也是shell的分隔符,为了防止bash对其进行解释,反斜杠\后的字符将按其字面意义处理。