find 命令 find 【搜索范围】 【搜索条件】
例如: find / -name install.log 意思:在根目录下查找文件名为install.log的文件。
注意:
1. 在生产服务器上应避免这种大范围的搜索,会非常耗费系统资源。
2. find搜索的文件名必须是一模一样的才能找到,要想进行模糊搜索,就要使用通配符,能够识别的通配符有三种,分别是: * ? [] (这三个通配符的功能和作用貌似在各种语言中都是通用的,详细介绍请参考博文:http://my.oschina.net/woshixiaomayi/blog/507939)
find命令的三个常用选项:
-iname 不区分大小写查找 如: find /root -iname install.log
-user 按照所有者搜索(不太常用) 如: find /root -user root 所有者是root的文件有哪些
-nouser 搜索没有所有者的文件(这个很实用) 如: find /root -nouser 解释一下哈:一般来说,没有所有者的文件就是垃圾文件,但是有两个特殊情况需要特别注意一下:
1. 由内核产生的无所有者文件,是很重要的,不能删除,例如:根目录下的proc,sys两个目录中的文件。
2. 外来文件,如:U盘,光盘等从windows中拷贝而来的文件。window中不是没有所有者这个概念,而是因为它忽略了这个概念。
find 按照文件修改时间查找
find /var/log -mtime +10 查找10天前修改的文件
选项: -atime 文件访问时间
-ctime 改变文件属性的时间
-mtime 修改文件内容的时间
时间段介绍: -10 10天以内修改的文件
10 第10天当天修改的文件
+10 10天以前修改的文件
过去的时间段知道怎么表示了,那么未来10天怎么表示呢?你开玩笑的吧!知道未来的事,我就去买彩票了,谁还在这里写博客……
find 按照文件大小查找 find . -size 25k 查找当前目录下文件大小等于25k的文件。
-25k 小于25k的文件
25k 等于25k的文件
+25k 大于25k的文件
注意:按照文件大小查找的时候有个要点,值得注意一下,不然会出错:kb的时候一定要小写,如25k;mb的时候一定要大写,如:25M。唉,Linux的开发人员也是逗我们玩……
通过i节点查找文件 find /root -inum 123456 其实,这个命令跟ls -i 命令有些互补,前者可以通过i节点查找文件名,后者是通过文件名查看i节点。
find 命令还可以使用逻辑判断
find /etc -size +20k -a -size -50k
含义:查找/etc文件下大于20k并且小于50k的文件。逻辑与,两个条件必须都要满足。
find /etc -size +20k -o -size -10k
含义:查找/etc文件下大于20k或者小于10k的文件。逻辑或,两个条件满足其中一个即可。
下面说一个重要的知识点:
find /etc -size +20k -a -size -50k -exec ls -lh {}\
含义: 查找/etc文件下大于20k并且小于50k的文件,并且把查询到的文件,以长格式和人性化文件大小显示出来。
固定格式 -exec <命令> {}\ 这里的命令,是对之前查询出来的结果的操作。
再例如: find /etc -size +20k -a -size -50k -exec rm -rf {}\ 将查找出来的文件删除,很方便吧,假如查找出来10000个文件,不会这个命令,就等着哭吧,但是有了这个命令就会so easy,老板再也不怕你删不完文件。
grep命令
grep 【选项】 字符串 文件名 在文件当中匹配符合条件的字符串
选项: -i 忽略大小写 -v 排除指定字符串(相当于反选)
如: grep ‘hello world’ abc.php 在abc.php中查找包含了hello world的行并返回。
那么总结一下,find和grep的区别:
find命令:在系统当中搜索,符合条件的文件名。
grep命令:在文件当中搜索,符合条件的字符串。
学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog