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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 4-13-2012 23:24 | 显示全部楼层 |阅读模式
在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。" f. F& p0 }4 u
  1. find
* K# V1 W; P$ H& R
! K8 P: F+ W: X) n  find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
% m1 }# W2 J: j$ _0 N0 ~3 @6 K7 G) h
  find的使用格式如下:
! Z3 ~( S6 r7 e
' r5 S7 E2 i0 q6 l5 @6 E% X  $ find <指定目录> <指定条件> <指定动作>& X0 ^% I6 x+ B6 _9 F

. o" o. {, b* Z5 H  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。( o) K  y  j& y. o2 ?* i

% a) B0 H) z( g! y  - <指定条件>: 所要搜索的文件的特征。! Q# ~* X! c  k& a' L, o

3 I$ P' S0 }; I% O. p* n. n9 i) B  - <指定动作>: 对搜索结果进行特定的处理。/ `+ }9 r& I( U2 x& p; a. _% _
7 t6 N7 E5 h' U0 ]
  如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
$ Q' @  @$ u. X: I9 B
& o1 W4 Q7 U+ t5 F1 }8 ~! u: X  find的使用实例:: V9 Y* a" ]. g! b( n$ Q# g+ V8 q
  A3 [/ B; _: f" Q7 S: _0 m
  $ find . -name 'my*'
9 \: O0 Z% [: ]6 C8 d7 K! U
& v3 k  P$ R! U( T* h! ]  搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
) i1 T9 n/ J) \% G
+ O+ k! L7 F9 g) P! `  $ find . -name 'my*' -ls
- I7 G- W. R) ^; x. H! n) p9 D7 s8 J" t. r
  搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
1 w6 i% d! g8 O  O0 q# f7 P' k6 d) B4 w- @) R0 ^& n1 J' o
  $ find . -type f -mmin -103 q5 E# ^% h, s2 u

, C6 f* M2 y# j& l2 o& ?& L  Q  搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
! j7 M! C" Y# N5 j' C3 U- h7 j$ r+ o6 U# \4 g% \
  2. locate! P; [) h' _7 @+ S% X

/ q6 V& j, s2 O, \  locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。. K0 ?! y  `# E+ y( {6 U  M

- H' y2 V! G5 M$ a. x  locate命令的使用实例:
; ^1 z5 P- |3 ]& j0 e4 d" y- O" t" p' `4 B$ x. K3 }
  $ locate /etc/sh$ n! T7 k' k. t0 p

) w# `  M; N6 K9 p9 v  搜索etc目录下所有以sh开头的文件。+ X4 b; p2 n2 n4 c, C. n' l5 Z- f

) ~! p% r0 P( G" h4 j, S6 ^2 ]  $ locate ~/m
* ]4 q9 L9 K4 T$ g/ @4 s3 P. e! ~
  搜索用户主目录下,所有以m开头的文件。5 L5 u$ v; ^8 V6 k2 n* x8 w! P; u
& F5 }# c+ @0 r7 D" ]+ O% H
  $ locate -i ~/m
# k7 `( J, [/ [8 {0 N
$ N3 A$ Q* y4 a9 b  搜索用户主目录下,所有以m开头的文件,并且忽略大小写。. E' A/ s7 U& D8 l: W1 H

; @3 G# T0 y4 C9 @3 Q7 d  3. whereis
2 x8 ~8 _% g' d/ o- k. q1 J- f7 H# P, U1 ~! Y2 ?
  whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
( P  o, u3 V! q+ \/ u! z! l
1 R1 ~2 ]) q. |' e5 W  whereis命令的使用实例:
9 y! l% p7 i/ O6 U, F9 W! T; I: `1 @( ~1 A$ F. X8 t4 ~- \/ }
  $ whereis grep
: U9 F4 ]* G: n2 ]* Q7 Y3 T% N9 f1 Q* q; z: n
  4. which8 V4 C9 v! ^6 F6 s5 [- \3 V' `: ~. s

6 K/ V8 R1 x8 l! y8 _4 Q  which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
% _- C0 `- f% a1 [  |9 @4 t! B, M9 b
  which命令的使用实例:# A* X( W: o1 ~' o+ }
' I& B2 Y/ G  }' z6 I# I4 l
  $ which grep, [3 j  d- ~8 b5 U/ x
3 V7 h& k! A; W4 Q( G* K, |* m" t
  5. type
4 T0 B7 M* \  _' q% k. h! [  ]5 }0 i# R# Z6 z- A8 c( ^  Y
  type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。2 B' @. T7 p5 ]9 f4 r5 p) ^
3 f1 m! ?) N5 s; ^2 {) p+ t$ x
  type命令的使用实例:
$ A$ }8 P0 s  ?- @. _6 ]
' o% m+ m0 W% p  $ type cd$ g# }% J$ V2 ]" I
- [6 A" D2 d, ^% n3 D
  系统会提示,cd是shell的自带命令(build-in)。
7 _5 v% M& f% \) S6 i( h  x4 ~& W( n$ u1 M2 ?
  $ type grep
( X( r; [: v, l& r7 ]- d4 g; C% F4 z$ E
  系统会提示,grep是一个外部命令,并显示该命令的路径。
9 ~2 `, ^- K5 q! e9 E! a
* T0 _! A# k/ b2 a& K9 T  $ type -p grep8 H5 ]9 @; u, J! b# S

  O- c7 _0 g% ?  加上-p参数后,就相当于which命令。3 L- o" `" y5 ^9 g# l

1 J1 S) V$ t* \# L

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

GMT+8, 12-29-2025 09:43 , Processed in 0.240882 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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