RH033 单元12 查找和处理文件

一、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

运算符ANDOR优先级高,而NOT在所以运算符中优先级最高。

 

七、find和权限

1. 可以按名称或ID匹配所有权(usergroupuidgid

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代表KBG代表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对其进行解释,反斜杠\后的字符将按其字面意义处理。

你可能感兴趣的:(数据库,用户,表达式,信息,管理员)