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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 4-13-2012 23:24 | 显示全部楼层 |阅读模式
在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。
: \- A1 y1 i' k4 o  1. find6 L" s1 x/ j! H* G: T: m
2 K( E6 |  {! f/ ]; B* G$ P
  find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。. C4 i4 |3 e) F4 i  ?5 c

; @) S0 _* v0 L) V: n6 Z; E2 n/ E  find的使用格式如下:* A( c, K: X3 V3 `8 p, s
3 n% X! {* c. E' k2 F
  $ find <指定目录> <指定条件> <指定动作>' ]6 H, H& y" ^- g% u
3 X( \" V- T$ C( X7 `% Z
  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。6 D) B$ d8 b' b1 Y: O

1 w0 p0 a8 }4 @. Y- A  - <指定条件>: 所要搜索的文件的特征。1 c/ R% i/ D: |

1 m- t: j8 B6 q  - <指定动作>: 对搜索结果进行特定的处理。' U* [4 m' v. u3 r* h
- f+ L2 v: e) q; j4 e% @8 k" u8 m
  如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
6 {0 W- M/ d8 }4 H
/ ?; g" y/ M/ H  find的使用实例:2 r- f! T/ E7 C$ h5 G1 N' m. k, b+ V

+ E2 j) y. R( B0 a8 b& M0 j  $ find . -name 'my*'
; \# K0 L# Q& F8 o+ c3 o- c% q6 ~3 ^
+ V3 _. T+ U8 H3 Q) |+ j  搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。0 K2 y9 E4 A# x, e$ t0 L
0 p. f! J3 @1 s& |. a
  $ find . -name 'my*' -ls7 m) |% f* y4 N- i  c$ U
8 G5 o% g% }) b8 z8 D
  搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
# S" n* [. @: T% v9 J% n8 n+ ?9 l" M3 F8 o# S
  $ find . -type f -mmin -10# W2 ~) P! }8 P
+ _8 N3 j; ?! M; y
  搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
% `: u' @  \" _  ~) c
9 q, G8 Z5 N0 W; J  2. locate6 q, ]' e' {; W  I* H7 u6 U/ |
& h7 w( I& ?0 G: ^: j9 H/ J% w, X+ {
  locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。. m  R* N# `0 V3 t0 [

7 h" O' E8 g; L5 }# `  locate命令的使用实例:
3 u* f: s) l. k& n7 L
% r1 L0 [. n3 y7 X( z! o; f  $ locate /etc/sh
- e) r" |' V0 a, M% j  }$ U# S# w) w/ u* v1 d  e# Y2 A) {" B
  搜索etc目录下所有以sh开头的文件。" b$ C1 m2 \+ D$ U' m2 V2 G

  I# v, h" [: s  $ locate ~/m" C3 [: W; I3 _( `* Y

+ w: d4 L; f5 N7 x  搜索用户主目录下,所有以m开头的文件。7 F0 q9 L2 A* o2 ]' V5 X6 P" E; N
' t( K8 K- i; |9 Z
  $ locate -i ~/m
; B" [3 F' Q6 |* t7 o$ S* Q% P7 N; _5 S  m9 j: g; @! ~7 D3 F2 |  G5 k. o
  搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
, H( b$ f' q6 X' j9 J
% H  D0 p# L) u' }9 Q  3. whereis9 b  d9 B9 F2 j  y' {0 L7 W

# H4 r7 Z5 p2 |0 P  whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。  c+ D! u# L) D

- y5 N& f! J& W2 K  whereis命令的使用实例:
  N* A2 h( D8 L4 c0 ~$ {; P7 V) z3 N! C1 |7 J/ Q3 o# k8 n# E8 j
  $ whereis grep0 x3 m% M6 ^, `- G2 \

$ Q9 ]- I6 P+ U0 e  4. which
3 k! `4 k0 q8 F
4 {2 {0 }" Z/ S  which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
0 h& B* m8 f4 R/ ^
/ `, G; ^$ e$ S2 o  Q9 @/ K  which命令的使用实例:
3 f* K8 N+ w5 Y  o% z! v! @; K9 Y. q4 T0 q: Q8 a
  $ which grep
' T- d7 B1 E9 |9 Y
7 N9 N! H5 {# s7 e  5. type" ?. n" r9 l7 {4 Y5 o9 G

- n' Z5 ^, u3 `  type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
# Y- s/ r' k& G% J# r  S$ @: ?. W" w3 @. i3 z! h
  type命令的使用实例:5 F3 ?$ G) g8 T2 R5 z* e
' t. `" ]  z- x: W6 c1 m
  $ type cd, k8 r+ p; c3 F1 ^
4 |  V7 a( E: P  t, j. ?" v( z
  系统会提示,cd是shell的自带命令(build-in)。7 }7 E' R% }8 B6 O

+ E; m4 q/ f3 e/ F' [% S3 a, K+ t  $ type grep9 r, ]$ ^) `9 G! i2 L
, X0 m7 J# |; V2 ^$ N
  系统会提示,grep是一个外部命令,并显示该命令的路径。2 n0 B" w2 n. p

* {) e1 N6 L  X: b8 X/ g  $ type -p grep
* z' a/ ]! x# {- k8 Y
7 g5 I( ]* h  O0 a  加上-p参数后,就相当于which命令。
: F: o+ S! g# }' k1 K, v1 C! h" u  e3 t

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

GMT+8, 4-20-2025 01:37 , Processed in 0.473438 second(s), 73 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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