EDA365电子论坛网

标题: Linux find 命令 [打印本页]

作者: ubeautqq    时间: 2021-7-12 10:11
标题: Linux find 命令
$ T5 j; d" ?2 t# g( ?: x' Z
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。: A9 C" l3 S' B9 |$ p8 U9 s' V
/ {$ `) h' P) B) ?. a
语法+ y$ y" v' S$ p2 a: b
find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
" r& v' v( b- {( j0 a0 [1 B5 _/ x7 f参数说明 :  z: z/ B  d: G) p/ d. r3 ^
0 Z/ c1 M3 X* P# X, E5 V9 E& J
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
3 F5 ~/ }& y0 F
. N2 Q& e8 w/ Cexpression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
0 c+ y; P# g+ c  b4 [, q- o
# ~" ]1 @$ B6 l4 w8 J, y: f-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件2 |& Z) n! [/ F: c! p
7 @1 [; S9 Q- \* `) {
-amin n : 在过去 n 分钟内被读取过/ x1 B6 v2 R5 E/ z7 _8 q. y

. J" e* F, i1 g- w. y: _# |-anewer file : 比文件 file 更晚被读取过的文件3 D+ g! M; @' t- s+ V

5 B6 |' U; I/ }3 a( q% W6 v-atime n : 在过去n天内被读取过的文件# v: Z$ a- i4 P. I

& {2 c/ |+ |( J+ ~-cmin n : 在过去 n 分钟内被修改过0 C1 Y( Y8 C! g9 A5 l1 W' W  Z& v

5 H! ]2 i, I$ E6 H9 W. _* v-cnewer file :比文件 file 更新的文件0 |3 [9 `+ U1 ~. u7 k; c
9 q& N- t2 J0 t0 o  x
-ctime n : 在过去n天内被修改过的文件
( u3 \/ c7 d$ B, s
3 S+ B4 m1 l) R-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name+ H, D+ j3 O* @! g) V% Q7 h! D4 D

( R1 B* V" }& S( Y9 F  ]* W/ x-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写8 E* ~: g" f' X7 {- Z3 N7 }) F
! K. v4 H# ]; S% E' U' s
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写) U, u! e% ?) e" v; x
5 ]6 f3 e, e% N
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
1 z7 J6 j( i3 \- k  [% r& Q" R' O
& a) s( j# u3 E3 z+ @2 f" k$ T8 Y-type c : 文件类型是 c 的文件。
$ B" \/ E4 V6 L) s# T( P  n% l! j& p4 K
4 U9 p1 e3 B' G5 dd: 目录' q9 M% }' _3 y& W5 I
3 @: T! C: {9 a6 W
c: 字型装置文件9 q- D( Z, w! G9 }6 v

8 p) Y3 ?* ~* Qb: 区块装置文件2 @; D7 {2 O' a+ l3 x: t* S$ Q3 \: Z
  E! l3 N* z1 b5 L4 d2 _
p: 具名贮列
. Q8 e9 x# {1 Z- S7 |1 h; a
2 w4 n( A6 n) x" F' u3 W7 O4 Hf: 一般文件
( }0 J3 Q+ x! S! ]( Z- N& i6 ^  {6 {1 E% k
l: 符号连结; O# c2 n  c, l$ \9 P. D
+ ]5 a; U) l3 m- @- c
s: socket0 u  \9 B# O7 u1 o  v* ^: _

! R3 X$ b9 Q- K5 j: K-pid n : process id 是 n 的文件- n4 a0 F+ S* b; u& a2 C
" a, J, a: A- {. @
你可以使用 ( ) 将运算式分隔,并使用下列运算。: o) p/ o0 @5 d4 i2 `/ d

2 w+ Y$ e" r, B: W  `6 Kexp1 -and exp2
6 R: `0 x$ o+ }- t, Q
5 K" g) B% m" f; J! expr( i4 d. c1 H0 k4 c) c2 L

# F& a5 m# V& O- L3 @+ o& v1 x+ y-not expr2 I7 I0 p. l2 K$ ~/ T$ ?

2 n8 A; ?" r. h, B; }exp1 -or exp2
4 m: Z# Y8 i- [( f# @; G) c5 T% O7 q- X
exp1, exp2% q7 T6 @# w& F6 f
9 k" v# G! b- _  a
实例- u; b' v, Z9 }2 X8 _9 W
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:( M: f  j6 T: E4 u' N; }& }: X' e

3 H/ O8 Y) a0 H9 G7 v+ \# t# [# find . -name "*.c"8 g2 T( M4 q1 C
将目前目录其其下子目录中所有一般文件列出
! o8 ^4 ?1 w/ Y9 F& \
/ P; i4 e: I+ K# find . -type f
1 d2 v$ w7 c' A4 ~! p将当前目录及其子目录下所有最近 20 天内更新过的文件列出:% O* Z! Q6 K) N4 j" K, S
/ \/ A2 i8 `. p/ S
# find . -ctime -20: K% B: i2 L. p: o7 P3 I1 q  m
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
' u- p/ G% c, M5 D8 v: _1 y& \. e; D: B& ~4 B
# find /var/log -type f -mtime +7 -ok rm {} \;
, E1 M9 e7 b+ V; I7 P; l5 p+ g查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
0 }; n' k2 K; G1 \! e- _
0 D4 [6 l: f" ^8 {# find . -type f -perm 644 -exec ls -l {} \;
( U1 s0 S+ x; F' \查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:2 E# n6 K$ z/ I1 S/ ~
2 q3 g; S0 d* [/ J! }
# find / -type f -size 0 -exec ls -l {} \;
作者: SsaaM7    时间: 2021-7-12 11:27
Linux find 命令
作者: happyday    时间: 2021-7-12 13:27
Linux find 命令
作者: mengtaiqi    时间: 2021-7-12 13:28
Linux find 命令




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2