TA的每日心情 | 衰 2019-11-19 15:32 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
: q5 |* o+ ]+ ]& [" i- ^Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
* ?+ H8 q* K4 ?& b: P
2 h- h3 N+ c6 a语法
7 p/ ^: P7 L8 M S; t! Xfind path -option [ -print ] [ -exec -ok command ] {} \;
9 g. ^* S5 A( F9 j/ L& Y) u参数说明 :0 M. \! |" i R5 u8 }; k
7 V0 G. g# w4 Z# E/ M
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。6 @9 X" k9 p# H! p& |; E# P
. v, z- D9 v! n" g3 ^1 @" b
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
/ m- b$ N& _; q! b8 D2 e1 R3 F5 _4 k7 x. ~/ C! ~8 P8 _
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件3 T& V9 [9 R, `" H
% |4 `: w" \) N5 l-amin n : 在过去 n 分钟内被读取过, N- z6 i" T- d" H) r
' V! v% e8 P g) m-anewer file : 比文件 file 更晚被读取过的文件 Y& Z0 m6 h" N% G
) y! i0 O7 n! X& g3 W
-atime n : 在过去n天内被读取过的文件( w* v% Z- |* H5 a$ a
) I( ^$ R- ^8 S4 P( ]; N
-cmin n : 在过去 n 分钟内被修改过
3 H! j5 w8 U5 m' l; t2 U$ O
" H/ i6 Y, z% d, ?-cnewer file :比文件 file 更新的文件
$ v$ k# ?2 s& P5 ]' z; O! D ]$ t, K! C* [2 h
-ctime n : 在过去n天内被修改过的文件
# G) Y( L7 q* A' L8 p% f* g9 c* [+ z
! M' a: s% v, j; }) f-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
, g( t, G1 h x: c
, g2 ^2 U H8 \( V( \# c-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
! P& \: J: W+ ]6 K* Q; S: z1 n( A$ P% j! N7 n" C
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写! R, p& q( U# { T0 n) j
" E; r7 r) m; r
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
+ i5 H9 s1 }, v$ C
, L4 Y# f5 f8 ^* f" d-type c : 文件类型是 c 的文件。
8 P8 Y- C$ ]: V; @
# `0 Y; ]6 ?& i! i2 H) R2 z) yd: 目录
$ S- r0 Q8 V- m. u, a* d5 |) c9 w* k4 I
c: 字型装置文件
% l) _( J' P6 b' }4 g' ~$ q: I4 }& S
b: 区块装置文件
$ H2 A4 ]1 ^ ~* U0 S% }1 y w5 y+ B7 _0 W
p: 具名贮列. `7 P* g9 I: x* Z" E
4 D: i2 |% ]4 O8 v7 h$ z
f: 一般文件& O! {5 S+ Q, h, c$ _, q! j9 N% j
0 ]( K8 t3 S7 C* X( ~, ^" H
l: 符号连结
) m% S& s9 h5 Q, @
, |0 g6 h+ q' S4 A& I# |& {% Fs: socket
5 u5 Y# u* |' E: Q" p/ X/ C9 J+ a0 U6 r, v( B
-pid n : process id 是 n 的文件7 K0 O3 Q; [+ a5 \+ [: `6 Y
9 P* S' |* W% i) K/ J" P W) @你可以使用 ( ) 将运算式分隔,并使用下列运算。( O/ n9 r) r3 g% |+ M# J% P
8 t3 }4 Q, h7 @) t3 f
exp1 -and exp23 D3 Y+ Z$ |0 i% d
9 u- b2 y S0 I8 |$ Z! expr3 s6 o0 J4 j$ T3 a# u1 t3 x
" e# `3 \) b' u$ ?" w& p4 L. S
-not expr
! f/ @5 r: G* B7 A) s9 V3 c) L, {# X5 k
exp1 -or exp2
9 R/ [% o. u+ O( e; |6 \8 C
9 b" s+ `' L+ z; _9 \ }- H Yexp1, exp2
- Q0 Z P- w0 Z$ L! i6 P Z" d) T' M0 }6 z, l: p1 ~! W
实例
3 ^- ~; I1 C9 ~& R4 p6 n) ^3 X将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
- F! k; E2 R1 S/ V8 ~' y# y! q& z- h k7 z y
# find . -name "*.c"- S8 v0 c; | M& @2 i
将目前目录其其下子目录中所有一般文件列出
- L: @0 p( ~7 ~7 p2 {- v6 }, [' V: a1 W0 F( V6 B
# find . -type f; |" [' e; ?( Y5 q0 M$ ]& c
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
7 y' N- ~. m+ i9 V5 |
% J2 i% T; o- [9 F, B& [6 k# find . -ctime -20
; n- \1 q5 w2 G* v( @% ~. R查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
- E j6 W* _& f: N+ J
8 O1 m- P, W/ z8 N) S4 V* M' N# find /var/log -type f -mtime +7 -ok rm {} \;9 n) H# w* Y2 a+ ?/ I" C# |! E1 ?
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
. S! {1 W2 A% V5 @$ ]. ]& L- j2 l8 v. z! [
# find . -type f -perm 644 -exec ls -l {} \;& m) F$ @$ I. E
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:+ y. T, u) i, q* H
7 n- E9 _% a6 A) @2 D* S# find / -type f -size 0 -exec ls -l {} \; |
|