您的位置:首页 > 其它

RH033 Unit 13 Finding and Processing Files

2009-12-22 16:04 507 查看
locate:用来在预先建立好的文件索引数据库中查找文件,所以必须先建立或更新索引数据库 updatedb用来生成或更新所以数据库 用locate并不只是查找某一个文件,而是会将所有路径下的相关信息全部列出,但是locate只能显示出索引数据库中存在的文件,假如当前某个文件被删除或又新建了一个文件,而没有及时更新索引库,就会导致查找的结果与实际不符 locate 关键字 查找于指定关键字有关的所有文件或目录 用locate查询文件速度很快,因为不需要遍历目录或磁盘,直接读取索引数据库,但是查找结果不精确,实际上反而降低了查找效率,所以一般不推荐用locate find:精确查找,命令后可跟路径或关键字,不指定路径则默认在当前目录下查找, 实时查找,不读取数据库,速度比locate慢一些,但查找的精准度很高,所以也是最常用的文件查找工具 使用find时,通常除了指定关键字,还会附带一些条件参数,以使查找结果更符合我们的需求,比如需要查找/etc路径下名称为passwd的文件就需要-name这个条件参数

需要说明的是,默认情况下,linux系统是区分大小写的,所以-name也是区分大小写的,如果查找Passwd就肯定找不到了,如果我们在查找的时候不确定文件名的大小写,就需要-i参数,忽略大小写 不过这样查找文件有时会出问题,因为/etc属于系统路径,有很严格的权限限制,如果换作普通用户去执行上面的命令就会报很多错误

日常维护过程中不会总是用root进行操作的,更多的时候还是以普通用户身份进行,所以在使用find命令时,权限问题是必须要考虑的 find的使用实际上不仅仅只是这么简单,有很多种用法 1、按属性 现在有这么一组文件

查找属主为user2的文件

查找属组为root的文件

还可以和一些逻辑操作符结合使用 查找属主为user1并且属组为user2的文件

查找属主为root但属组不为root的文件

查找属组为root或者是user2的文件

2、按权限 还是刚才这组文件 查找权限为664的文件

查找属组有些权限的文件

查找其他用户有执行权限的文件

查找任意位有写权限的文件

3、按大小 有三个文件,大小分别为1M、2M、3M

查找大小为2M的文件

查找小于2M的文件

查找大于2M的文件

4、按时间 有3种选项 atime:被访问的时间 mtime:内容被更改的时间 ctime:内容以及元数据被更改的时间 参数后面需要附加一个条件,1个整数,单位为天 查找/var/log/下面5天之内任意数据被改动过的文件

查找/var/log/下面5天内未被改动过的文件

按各种条件找来找去,到底有什么用呢,和实际结合起来,又有很多种用法,这里需要两个参数 ok和exec 假设,一个目录下,用三个文件作测试

1、为了文件安全,不希望其他人对文件有写权限,但是又不想一个一个的输入修改权限的命令,就可以用find配合执行参数来帮忙

解释一下,首先先按权限找出other上有写权限的文件,然后查找结果被-exec参数传给后面的chmod命令,执行删除写权限的操作,两条命令一次执行完毕,省时省力 “{}”表示调用-exec前的find命令查找出来的所有文件 “ \;”前面有个空格(空格斜杠分号)为该命令的固定语法格式 -ok和-exec在命令的执行结果上没有区别,但是在执行过程中-ok会询问用户是否继续执行后面的命令,而-exec不询问直接执行 2、希望把当前目录下大于1M的文件进行压缩以节省空间

Orz,真强,bzip2竟然把3M的文件压缩成了8K!!!本文出自 “Dy!ng_Sou|@51cto” 博客,请务必保留此出处http://wangwenbo.blog.51cto.com/185762/247544
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: