刚开始学Linux,这是关于Linux文件搜索命令,就目前,尽我所能把他写全一点,后期随时补充
文件搜索命令
一、locate命令
二、find命令
四、find命令和grep命令的区别
1、locate命令
语法: locate 文件名
例:locate user(搜索user的文件名)
优点:搜索速度快
缺点:只能搜索指定文件名,比方搜索user 文件的时候只会搜索到user,搜索不到users
注意:locate并不是在数据库里面搜索的,而是在/var/lib/mlocate里面进行搜索的,但是mlocate不是实时更新的,是一天更新一次,所以当你新建一个文件夹,locate命令是搜不到的,这个时候就需要用一个更新数据库的命令
更新命令:updatedb (强制更新)
2、find命令
语法:find [搜索范围] [搜索条件]
例 :find /root -name User(在root目录下搜索文件名为User文件)
注意:find命令查询出来的文件同样只能和搜索出来的文件名要一模一样,如果要进行模糊查询,就要用到通配符
linux的通配符
* 匹配任意内容
例:find /root -name *d (查询root目录下文件名以d结尾的文件名)
? 匹配一个内容
例: find /root -name us?r (查询root目录下文件文件名是us什么r的文件)
[] 匹配任意一个中括号内的字符
例:find /root -name user[sd] (查询root目录下文件名是users和userd的文件)
补充:除此之外find还有其他的命令
1. -i 不区分大小写
find /root -iname User
2. 搜索有所有者的文件
find /root -user root
3. 搜索没有所有者的文件(如果有则是垃圾文件,可删除)
find /root -nouser root
4. 查询指定时间内的文件
-atime 文件询问时间
-ctime 改变文件属性
-mtime 修改文件内容
例: find /var/log -mtime +10 (查询/var/log下10天前修改的文件)
+10 查询10天前的文件
10 查询10天当天的文件
-10 查询10天内修改的文件
5. 查找指定大小的文件
find -size 25k
find -size 20M
注意: k为小写、M为大写(一定要这么写,不然会报错)
6. 查找文件名和 i 节点
find /home -inum 262242 (查找/home目录下i节点为262242的文件名)
7. 并且、或者
-a and 并且 ,两个文件都满足
-o or 或者 ,两个条件有一个满足即可
例: find /home -size +20k -a -size -50k (查询在home目录下文件在大于20k并且小于50k的文件)
8. -exec 命令 {} \ 命令2处理命令1搜索出来的结果
find /home -size +20k -a -size -50k -exec rm {} \; (查询在home目录下文件在大于20k并且小于50k的文件之后删掉他)
3、grep命令
语法: grep [选项] 字符串 文件名
-i 忽略大小写
-v 排除指定字符串(取反)
例:grep "size" User (查找User文件里面有size的字符串)
注意:指定字符串一定要用" "
4、find命令和grep命令的区别
find命令:在系统中搜索文件名,如需模糊查询,则需要通配符(*,[],? 上文有讲)
grep命令:在文件中搜索指定字符串,入去匹配,则要用正则表达式