Linux基础(5):linux的查找命令
Linux进行查找的相关指令,find grep locate
find命令
针对文件的属性进行搜索。文件具备的基本属性有:文件名、文件类型、文件大小、文件的目录深度
依据文件名查询(-name)
基本语法
find 搜索的路径 -name 要搜索的文件名
在具体搜索的时候,可能不确定文件名的具体情况,可以采用模糊查询
注意模糊查询时,文件名加引号,单引号双引号均可
操作示例
1 2 3 4 5 6 7 8 9 10 11 12 13
| gao@gao-VirtualBox:~/桌面/test$ find ./ -name temp ./temp
gao@gao-VirtualBox:~/桌面/test$ find ./ -name "tem*" ./temp ./temp3 ./temp2 gao@gao-VirtualBox:~/桌面/test$ find ./ -name 'tem*' ./temp ./temp3 ./temp2
|
依据文件类型查询(-type)
基本语法
find 搜索的路径 -type 要搜索的文件类型
文件类型有七种
操作示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| gao@gao-VirtualBox:~/桌面/test$ find ./ -type f ./b/c ./all.tar.bz2 ./all.tar.gz ./d/ff ./d/d ./d/gg ./all.rar ./temp ./temp3 ./temp2 ./all.tar
gao@gao-VirtualBox:~/桌面/test$ find ./ -type d ./ ./b ./case1 ./d
|
依据文件大小查询(-size)
基本语法
find 搜索目录 -size 【+/-】文件大小
1 2 3 4
| find ./ -size 4k 搜索的文件范围,区间为 (4-1k,4k], 表示一个区间,大于 3k, 小于等于 4k find ./ -size +4k (4k, 正无穷), 表示搜索大于 4k 的文件 find ./ -size -4k [0k, 4-1k], 表示一个区间,大于等于 0 并且 小于等于 3k find ./ -size +1k -size -5k (1k, 5k), 表示搜索该区间的文件
|
操作示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| gao@gao-VirtualBox:~/桌面/test$ find ./ -size 4k ./ ./b ./case1 ./d
gao@gao-VirtualBox:~/桌面/test$ find ./ -size +4k ./all.tar
gao@gao-VirtualBox:~/桌面/test$ find ./ -size -4k ./b/c ./all.tar.bz2 ./all.tar.gz ./d/ee ./d/ff ./d/d ./d/gg ./all.rar
gao@gao-VirtualBox:~/桌面/test$ find ./ -size +1k -size -5k ./ ./b ./case1 ./d
|
控制目录层级(-maxdepth/-mindepth)
基本语法
find 搜索路径 -max(min)depth 层数 其他属性的搜索格式
注意:必须配合其他属性联合搜索,必须先写层级目录指令,再写其他属性搜索
1 2
| find ./ -maxdepth 3 -name temp2 #max,就是最多搜索到第几层 find ./ -mindepth 2 -name temp2 #min,就是最少从第几层开始
|
操作示例
1 2 3 4
| gao@gao-VirtualBox:~$ find ./ -maxdepth 3 -name temp2 ./桌面/test/temp2 gao@gao-VirtualBox:~$ find ./ -mindepth 2 -name temp2 ./桌面/test/temp2
|
同时执行多个操作(exec/ok/xargs)
基本语法
1 2 3 4 5
| find指令 -exec shell指令 {} \; 注意{}与\之间空格 find指令 -ok shell指令 {} \; 注意{}与\之间空格,会有和用户之间的交互 find指令 | xargs shell指令
另:效率上来说,xargs效率更高,因为-exec是逐条传递数据给后面的指令,而xargs是一次性传递数据
|
操作示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| gao@gao-VirtualBox:~/桌面/test$ find ./ -name "*p*" -exec ls -lh {} \; -rw-rw-r-- 1 gao gao 11 6月 19 16:02 ./temp -rw-rw-r-- 1 gao gao 11 6月 20 14:18 ./temp3 -rw-rw-r-- 1 gao gao 11 6月 20 14:17 ./temp2
gao@gao-VirtualBox:~/桌面/test$ find ./ -name "*p*" -ok ls -lh {} \; < ls ... ./temp > ? y -rw-rw-r-- 1 gao gao 11 6月 19 16:02 ./temp < ls ... ./temp3 > ? y -rw-rw-r-- 1 gao gao 11 6月 20 14:18 ./temp3 < ls ... ./temp2 > ? y -rw-rw-r-- 1 gao gao 11 6月 20 14:17 ./temp2
gao@gao-VirtualBox:~/桌面/test$ find ./ -name "*p*" | xargs ls -lh -rw-rw-r-- 1 gao gao 11 6月 19 16:02 ./temp -rw-rw-r-- 1 gao gao 11 6月 20 14:17 ./temp2 -rw-rw-r-- 1 gao gao 11 6月 20 14:18 ./temp3
|
grep命令
基于文件内容进行搜索
基本语法
grep 要搜索的内容 搜索路径 附带的参数
1 2 3 4 5 6
| 附带的参数主要有: r:对文件递归搜索 i:忽略搜索内容的大小写 n:显示行号
注意:搜索的内容写在引号中,要先写搜索内容
|
操作示例
1 2 3 4 5 6
| gao@gao-VirtualBox:~/桌面/test$ grep "world" temp -ni 1:world gao@gao-VirtualBox:~/桌面/test$ grep "world" ./ -nir ./temp:1:world ./temp3:1:world ./temp2:1:world
|
locate命令
基于操作系统维护的数据库,查询是否存在某个文件
使用之前最好先去更新数据库信息
使用方法
1 2 3 4
| locate test locate test -i locate test -n 5 locate /home/gao/test
|