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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 4-13-2012 23:24 | 显示全部楼层 |阅读模式
在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。
9 U6 r2 h, b/ E* b  1. find! l3 e1 v7 e0 x! A  G+ Y2 ?# \

: o9 Q. s4 l8 `4 B: F7 g3 K9 w  find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
, ~  E+ q5 d- S  U7 E" e/ X/ ?" x1 ?9 m9 ~, ]
  find的使用格式如下:
0 U0 D" Q" _7 A' `# J2 m- M) |4 Q7 f" y( R
  $ find <指定目录> <指定条件> <指定动作>
" n5 v# x* X3 Y9 \2 v5 B0 V: l4 l# k/ g9 x3 ~5 q& }
  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。  N& b5 x7 y% r7 q) u

7 w2 y' U$ Y! N0 [0 b, ^  - <指定条件>: 所要搜索的文件的特征。
: H7 X4 B3 [- `0 q* }
  ^! z" x. Q% k  r$ v2 z$ E) u  - <指定动作>: 对搜索结果进行特定的处理。  D! o; L1 C& g5 f, G- g9 @
9 I- m3 W. @' l8 c1 o/ D
  如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
3 T* b! F. a  \- Q, e; h. g0 g3 Z2 g. W4 [: ~# a4 p4 q3 ?
  find的使用实例:: N! G" {! p' V: \. X0 E7 z0 N
9 ]5 h" `9 t  Q/ U: j9 @0 h
  $ find . -name 'my*'! z6 G* S5 {, g
* t6 [+ u- S% h( L
  搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
! M1 t1 ]* [+ a; V" B+ e" R2 h" E6 L: ^+ a1 T* H
  $ find . -name 'my*' -ls
* |8 M2 Z  `8 j: L  H' y. r( ^( _# S% g+ @" F. z" f1 P/ e( Q' }8 h; j
  搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。3 c6 I6 |3 C) B8 @* o

* k( Y4 m4 r. |  $ find . -type f -mmin -10
. ~7 s8 Z: M8 U, Q+ {
0 _  _6 n. W: a" O  搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。; q; u4 D) C6 T8 _; E  S8 x% R1 u; u
$ r7 Z* ~- ]4 T- _  N: H% g3 z
  2. locate
) ?3 t  g- z% o0 Z
" w2 ]4 Q% g3 }  locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。. t* D, ?) w7 S. o! A/ C1 }8 ?

/ a) b; l, D( b- s2 ~  locate命令的使用实例:
7 U+ u2 U) A: @1 m0 O# K7 B2 \- z: [5 o7 O9 d4 m% i3 i5 {- H0 Z
  $ locate /etc/sh- i" {  q; s' ]+ \" }% D; d0 Q: Q9 ~

0 y  D8 }+ _3 C9 @' v  搜索etc目录下所有以sh开头的文件。
5 @9 y; d: ^4 [. O5 \# u% q" A% ]
  $ locate ~/m
9 }" y$ G' A$ s2 `5 F% {  D( Y: I
8 l' u. D4 T8 t) U! w% A6 o! B; n  搜索用户主目录下,所有以m开头的文件。8 n9 o! ^5 b2 H7 ]% S

/ ~& [. C. \# _$ V  $ locate -i ~/m
6 \0 V! I: G8 I. W7 {3 o
; l$ [- Z( q# s$ C* p3 ]  搜索用户主目录下,所有以m开头的文件,并且忽略大小写。: G2 o+ _' g  I* V5 Q1 O& e3 v
+ t; U& O9 Z: [- c6 |/ Q
  3. whereis; ^4 j, ^& i, S# D) j" Q
& Q" J+ O6 P- I$ o+ Q' V4 y; ?
  whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。2 ]9 e" b/ e1 w& Z/ C2 d/ b

, l1 {! R  }, {9 V/ e3 h2 b1 a9 e' d  whereis命令的使用实例:
% ^" L$ W/ Q! Q: B. h
* x3 J2 u7 H. P# j4 p( `4 \. q  $ whereis grep
. \6 q1 C4 y' a: m! n% S" z; C  f2 V0 k$ \7 w! N  {0 e5 j
  4. which+ C. S9 u& T2 r; Y$ {. j8 Q

1 o; ?7 d# j! c7 O0 u  which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。2 s# d" G8 [. U' U, H5 d/ V3 q/ X

& K0 R' x) C1 e! B) [, n  which命令的使用实例:6 `  ^- b& q1 x- d
* P$ G3 |2 `3 S* e7 ?% S
  $ which grep% ~+ C: l6 ~$ ]: u2 R& f
% q3 a! L% H1 x( Q  m
  5. type/ d; F0 {1 X( K! s/ Z+ v+ h
) j. R2 w# }' l3 l
  type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。5 q' X" v+ n+ {2 [' e7 o

' F) ~4 W! D; d; k' F  type命令的使用实例:
7 Q8 M+ Z- L% h
8 n! @1 y& Z5 H4 h. A  $ type cd
# Z8 K$ r6 E# W, F2 D4 F* g; Y6 M& c% E9 u* ~
  系统会提示,cd是shell的自带命令(build-in)。
- I% X- O& Y7 {0 O; [8 `
6 c7 _- g/ M. w  $ type grep- h( }* w4 j8 E" C6 |, J" d6 u
, w+ O5 Z& W: @+ g, e
  系统会提示,grep是一个外部命令,并显示该命令的路径。: h+ q$ F3 H+ E: D9 L
" ?# X) u0 p3 c9 ]4 s. o/ w' w7 S
  $ type -p grep7 g6 O$ v/ ]& L& ]3 w0 x4 H

. n8 a" F4 j! y/ ~, o8 ^* E  加上-p参数后,就相当于which命令。
4 I! `9 I: j4 L6 u) e
9 J. U$ F; |$ M! \' c) i0 \

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

GMT+8, 11-12-2025 18:44 , Processed in 0.193467 second(s), 73 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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