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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 4-13-2012 23:24 | 显示全部楼层 |阅读模式
在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。
8 U  E- I2 M, B3 e, T8 T2 M7 C! U  1. find" ?& c8 F+ N, [4 G% \8 }

8 E: `, H# `- W! P$ q  find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
* V/ G6 b% {* e+ B
+ ]/ J) x) O5 c, X  find的使用格式如下:
( L6 r7 p& g2 ~6 Q8 Q4 E5 v) w
: R3 j; Z' [) v  $ find <指定目录> <指定条件> <指定动作>7 E6 I! l4 N6 J3 U7 T# {

; E, Q" r! n, ~  h% I  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
. o5 [1 I5 ^' a3 T) }: s! A
  D4 N( D7 p) l( y  - <指定条件>: 所要搜索的文件的特征。% c* N: }5 l  v1 s  N
, z% e9 y3 y' a! d/ J0 r5 Q
  - <指定动作>: 对搜索结果进行特定的处理。
3 m. N/ h* q* n8 x! T7 G
/ o& |% u$ \$ @# x  如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。/ b- O2 z, v- w% N. P$ ?+ G
+ A  s  C) l2 x# h5 v4 k& y
  find的使用实例:
# ?" ?& k* m# d' c9 g% ^7 I
0 D8 ^' N- O" l+ H! ?+ K: L  ~% z  $ find . -name 'my*'
, V& c! L/ K$ W) O/ F$ Q- h3 X8 h" ]- n& P+ N! h
  搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
7 t) _2 w: ^% @& x% w' `) N+ t
- X1 ?" O, `9 V# j! h  $ find . -name 'my*' -ls
: G6 e$ w$ \, \. A. z7 c+ J; b
  搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。& C; \% j4 h& b" e. D3 d
. W$ J9 U7 S$ p2 r; y: ^
  $ find . -type f -mmin -10
) i$ d, q8 `  W9 g! P& W3 ^' _! b7 l* Z1 L
  搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。; Z( b$ N" B9 i1 n2 e2 q8 H
+ [/ o$ |3 U0 I* R
  2. locate
9 A; |& J* V( w' x
& g7 @5 \. p4 t- B' n  locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
( O/ b- G& Z" N' F9 K& Z" Q  T9 d( O$ _: F' r
  locate命令的使用实例:
1 T$ @; b0 S- A. }- ]. ^2 Z: {' Z* s
  $ locate /etc/sh- i3 I/ W/ A7 U: X6 ^0 g$ c8 o
) w8 w3 B$ \" n+ ]
  搜索etc目录下所有以sh开头的文件。
+ }! N$ c3 s5 l7 L& c( t
% W; t) h& _/ k. D9 c- h; Z  $ locate ~/m
6 Y/ L- A+ ~; C8 z+ ^
+ H! \  U7 r% n6 {) o. @  搜索用户主目录下,所有以m开头的文件。
" a+ k# M( B0 k: t
0 }* x9 `, @9 s+ V  $ locate -i ~/m
% p4 d+ C4 H' ~
0 @9 |- V5 n) a! p# d( O( g6 ~  搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
& V! I' S' b$ d1 d' V% C4 f. J1 z) T. H' P8 k; k: E
  3. whereis1 x9 `& K: H7 C+ T6 a: v

1 j$ m0 q8 s" g! ^1 g- S  whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。2 T% C$ ~7 H. Y2 p- v
# t& {' D) m/ S  v  c- c4 m
  whereis命令的使用实例:
) j$ f: ]9 @- B0 g! A
' w) s$ o+ s3 x8 z- ]  $ whereis grep" a6 I7 u" o& J" u/ ^% U, \# Z- c5 q# Z
4 H# k  y, A3 p) i" {' e
  4. which
8 K1 t9 B; R! H4 j, h3 w* q* X; M/ J, z9 h
  which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
; G: g2 w- G6 z6 P' @% X  }( V4 l  g6 ]+ D' q8 |2 v3 {
  which命令的使用实例:0 `1 F, o0 |' _' _% k. T
$ E0 ~: k" o+ F+ B
  $ which grep
0 l. J9 }+ e% J$ B7 c. D; m3 T! V6 }) e2 ~+ X& Z
  5. type
& c: B1 r: _( |" ]
& h" C7 \. l$ W  type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
8 F. H, ]; l+ D! i& B% t/ C$ [9 E: m9 R7 ^
  type命令的使用实例:/ y: U! H# N* x& q) ^" Y" H: t

+ j( u7 Z/ P$ f0 A  $ type cd
4 x+ }$ v! }; n3 b$ X' x8 L2 r6 [$ ]- h1 }- j* ^; X% G5 A7 A! z3 K
  系统会提示,cd是shell的自带命令(build-in)。
) c2 \9 Q3 }9 _: ]! ~( v" m5 d( u6 `
$ i' I% R1 n, L  $ type grep4 Q4 C- o1 H0 |: A; {) n% E
9 t  S; k# j* |# W3 v
  系统会提示,grep是一个外部命令,并显示该命令的路径。8 Q$ Y3 I; S/ T; B/ r: f* F  y
: \8 L+ ~* J3 O, y; S
  $ type -p grep
* w8 F5 g, i/ `5 @: T$ L/ W: [# H1 G2 h0 y
  加上-p参数后,就相当于which命令。
9 p7 u# K/ F9 c  x% }6 ~  Y  _1 G) F( L/ n& r" M

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

GMT+8, 2-15-2025 00:58 , Processed in 3.865052 second(s), 75 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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