五、Linux中的搜索文件和目录命令
Linux中的搜索文件和目录命令
一、find [搜索范围][搜索标准] 关键字
-name:默认按名称搜索(文件或者目录所在的路径也在搜索范围之内)
-size:按文件大小搜索
-user:按文件的所有者搜索
①find *z* *是通配符,搜索当前目录下,所有名称中包含z的那些文件或者目录。不加-name,默认是通过-name查找
等同于find -name '*z*' *是通配符,搜索当前目录下所有的名称中带a的文件或目录,注意,写上-name时,后面的名称一定要加上单引号或双引号,否则会报错
单引号的地方也可以使用双引号
②find *.txt *是通配符,搜索当前目录下所有的.txt文件。不加-name,默认是通过-name查找
等同于 find -name '*.txt' 注意,写上-name时,后面的名称一定要加上单引号或双引号,否则会报错
③find -size -1k
④find /etc -user zhangsan 搜索/etc目录下所有的所有者是zhangsan的文件和目录
二、locate:在整棵目录树中搜索文件或者目录,都是根据名称搜索,效率高。
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准。一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb。默认情况下 updatedb 每天执行一次。所以一般在使用locate之前要先同步下数据库(updatedb)。
虽然locate查找的快,但是updatedb占用的时间较长,所以locate一般不常用。
updatedb
locate 关键字
updatedb
locate *.txt
locate testDir
三、搜索过滤命令,在前一个搜索命令的结果中进行按名称进一步过滤:
搜索命令 |grep [选项] 过滤条件 搜索命令包括 find、locate
查看命令 |grep [选项] 过滤条件 查看命令包括cat、ls 等
选项:
-i 忽略大小写,i指的是 ignore
-n 显示行号,n指的是number
-in 忽略大小写且显示行号
①find *.txt|grep new 搜索当前目录下,所有名称包含new的.txt文件
find /etc -size -5k|grep firefox
②cat t1.txt|grep shanxi
③cat t1.txt|grep -in shanxi 查找t1.txt文件中的shanxi,-i是忽略大小写,-in是忽略大小写且显示所在行号
④ls -al|grep new 查找文件或目录名中包含new的