国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Linux基础] 基础知识:Linux的五个查找命令-详解:find/locate/whereis/which/ type

[复制链接]
发表于 4-13-2012 23:24 | 显示全部楼层 |阅读模式
在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。( Z' ?8 X! x! F
  1. find% b: K+ ?! o$ h
; F' [  r- {9 m# S5 R5 D
  find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
* B7 g  \/ j& H4 E  }
5 L: r2 ?; w- F$ i. U) |' i! T  find的使用格式如下:
* o- Q( A, [. ^+ X, G; l, H' h* L2 @  i
  $ find <指定目录> <指定条件> <指定动作>: ?/ g8 Y* R) R# R
* s. ^2 a% z  U9 ], g' g6 H  p+ }
  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。" Z; p$ I5 O( A0 Z- Q8 N3 b) V# K

4 v" a- ^( b' m, z+ }  - <指定条件>: 所要搜索的文件的特征。1 ?( {" q! q2 C  g# E* L

/ G) F  _; T7 t1 p  - <指定动作>: 对搜索结果进行特定的处理。- m  M7 t3 X# o' Y7 k/ o7 `1 Q

% ~, F! B: G$ {1 _8 v6 [  如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。8 D6 i! s& o3 |

2 d; l( ^/ H5 G6 |  find的使用实例:
- n# B" Q' }; O) K! l5 J8 z, N! t# F1 ~" a% M
  $ find . -name 'my*'7 N( L! @( \; l6 s

2 O5 R$ j) Z0 R  搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。* m' Z' b" F3 e, T6 k0 O) [
9 N: ^% I, A( M5 c: j2 w- e  j
  $ find . -name 'my*' -ls1 ?, m8 l. T+ {) b$ S- X

- ^2 e+ P7 w: Y# \! ?  搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
$ o! f9 U. t+ I1 \3 x' C9 k2 T+ i$ F. p% E4 \
  $ find . -type f -mmin -102 A& a1 [  x" j* ?/ `
+ E% {9 u3 T, Z( f5 {
  搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。+ z  p5 v  @8 g9 ]( W( S2 G

7 x. ^; J& ?* w* s- u4 |* m* {; t  2. locate( O) k- F) P" G8 d
' F; j. n/ J( e
  locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。* V3 n- ?" j9 v6 p

3 _% ^( U7 ?8 a# T  locate命令的使用实例:/ ^- m7 f* U% k3 A& b- d8 h
# }1 P, F0 R: C9 @0 {
  $ locate /etc/sh
- T; i; `  }0 P9 {3 k6 h3 p2 l+ U' f! c4 H/ W/ f, H
  搜索etc目录下所有以sh开头的文件。
& J) l0 R7 Z3 X( H8 z' m
; C5 u+ P* E, g& d1 O1 X2 B9 \% B  $ locate ~/m
. B9 A6 [6 s# N9 e" o* F& L: c2 k' X' e/ \* J- B4 E
  搜索用户主目录下,所有以m开头的文件。/ p) D$ V% D. G: n* I( {; k
, G$ ]3 _5 |  ^1 z7 x
  $ locate -i ~/m9 s2 ]$ s" O6 f% ~: n% {
4 C6 o2 M4 j+ s8 R% _8 B; G
  搜索用户主目录下,所有以m开头的文件,并且忽略大小写。( w+ N% G4 L3 t7 F  L5 _
! `, g3 X- _: w8 K; o
  3. whereis
# ~" n1 W8 N" c/ {( Y
0 y: j. j9 I. M2 C4 N4 q" p  whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。9 u3 b2 }, I# `( [2 R2 L9 R9 K

0 H* s9 ~8 Y: F1 ~2 M: ~8 a  whereis命令的使用实例:/ N9 Q% |# r' B$ v0 w/ K

# w; a( R- z/ G) ]7 b$ I  $ whereis grep5 W6 @/ E# a% L( x& ~: f2 v
/ g6 \  c7 Q! t. y9 C* {
  4. which
* l. n' r7 u& d8 R8 C3 \! A; V: M* ~" {2 m! f. h2 \6 T
  which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
3 @3 n7 e$ e) h3 r3 R3 a4 J
* k* ?1 V& {9 b, C- A$ ~  which命令的使用实例:
7 Y- ]" |; a, n9 O& |3 w- d
- I- j8 }$ v' Z, Y2 L( k  $ which grep  g5 _+ ?, D% G8 K. z1 P# l6 k* |

1 G( {7 m6 l6 u; k/ p* ^  5. type: B2 `: t0 L8 O0 T( r" U5 u
  h, k) e1 H# e. B& S! g6 I7 V$ p; `
  type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
( a  c! k' Z0 K: e! u! ~! b2 V; V( A" P
  type命令的使用实例:
6 |. G5 W" X% F7 x2 V: H/ J; R# H" b1 \& l& l4 S
  $ type cd1 l( u& ~: h" m' Q
/ f4 |* ~( d# y2 @- C5 z+ D6 g
  系统会提示,cd是shell的自带命令(build-in)。
. x5 ]8 a# m; L* k7 D) Y) R# \# F3 t4 k. B8 B* @- X) h
  $ type grep
) x7 w. d7 p9 _& s: J, D1 S, H* O; y8 T: Y- r3 q1 R
  系统会提示,grep是一个外部命令,并显示该命令的路径。! g/ c9 s9 y) h2 h" _+ S' g

1 Q% w7 c: _  N0 R$ r  $ type -p grep. x! }" S. `' X7 m
7 z  \& _2 O7 r& [) _
  加上-p参数后,就相当于which命令。, K: ~: b1 H! H9 G/ R  |

3 o% j2 S/ G2 X# }  _7 u

|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 3-20-2025 03:08 , Processed in 0.628741 second(s), 73 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表