Linux中的搜索文件和目录命令

一、find [搜索范围][搜索标准] 关键字

-name:默认按名称搜索(文件或者目录所在的路径也在搜索范围之内)

-size:按文件大小搜索

-user:按文件的所有者搜索

 ①find *z*      *是通配符,搜索当前目录下,所有名称中包含z的那些文件或者目录。不加-name,默认是通过-name查找

 

linux 搜索 java linux 搜索目录名_linux 搜索 java

等同于find -name '*z*'         *是通配符,搜索当前目录下所有的名称中带a的文件或目录,注意,写上-name时,后面的名称一定要加上单引号或双引号,否则会报错

 

linux 搜索 java linux 搜索目录名_搜索_02

单引号的地方也可以使用双引号

linux 搜索 java linux 搜索目录名_大小写_03

②find *.txt       *是通配符,搜索当前目录下所有的.txt文件。不加-name,默认是通过-name查找

 

linux 搜索 java linux 搜索目录名_linux 搜索 java_04

等同于 find -name '*.txt'    注意,写上-name时,后面的名称一定要加上单引号或双引号,否则会报错

 

linux 搜索 java linux 搜索目录名_大小写_05

③find -size -1k

 

linux 搜索 java linux 搜索目录名_linux 搜索 java_06

④find /etc -user zhangsan 搜索/etc目录下所有的所有者是zhangsan的文件和目录

linux 搜索 java linux 搜索目录名_linux 搜索 java_07

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

linux 搜索 java linux 搜索目录名_数据库_08

 三、搜索过滤命令,在前一个搜索命令的结果中进行按名称进一步过滤:

搜索命令 |grep [选项] 过滤条件    搜索命令包括 find、locate

查看命令 |grep [选项] 过滤条件   查看命令包括cat、ls 等

选项:

-i     忽略大小写,i指的是 ignore

-n   显示行号,n指的是number

-in 忽略大小写且显示行号

①find *.txt|grep new 搜索当前目录下,所有名称包含new的.txt文件

linux 搜索 java linux 搜索目录名_大小写_09

find /etc -size -5k|grep firefox

②cat t1.txt|grep shanxi

linux 搜索 java linux 搜索目录名_大小写_10

③cat t1.txt|grep -in shanxi     查找t1.txt文件中的shanxi,-i是忽略大小写,-in是忽略大小写且显示所在行号

linux 搜索 java linux 搜索目录名_数据库_11

 ④ls -al|grep new  查找文件或目录名中包含new的

linux 搜索 java linux 搜索目录名_大小写_12