TA的每日心情 | 衰 2019-11-19 15:32 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 v/ p4 d/ ^8 D1 j% e8 j4 o! OLinux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。4 ~, J2 K2 a, v# B7 c. L9 |
* n+ [/ i/ v3 a2 F% v% G+ Q% R& y
语法* Z1 E L, `1 b0 {! |' Y
find path -option [ -print ] [ -exec -ok command ] {} \;
8 _8 X9 d9 Z0 W2 L% [( M参数说明 :- i, O S1 m" \) ~
8 j+ O) D" M3 f4 \3 P: e4 zfind 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。; H, ?8 Q. E( X
4 G8 o; ?: T- Z" w& M; M
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
/ S1 d# a7 s; c9 `
5 [& @1 V. C9 N-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
* x e) `" @% X: F) C. x, B+ C$ b) ]; w% |$ a2 |* v$ K
-amin n : 在过去 n 分钟内被读取过& A# }- J: W) S/ |5 Z ^7 n- P
4 N0 P- M& C& K( v' d4 g! h* G-anewer file : 比文件 file 更晚被读取过的文件
' l( i, ?4 R ]2 L* _4 f) c
" h' @4 k1 e8 }" A) k& S4 E-atime n : 在过去n天内被读取过的文件: t9 D9 ~- C0 D3 E* P# J
7 _) T8 ?1 Q# r4 x# K; W6 \-cmin n : 在过去 n 分钟内被修改过
- V+ t% y! F( M0 u# z' u# _/ v1 \7 k! ^( f! I6 p- I/ R$ g
-cnewer file :比文件 file 更新的文件
; U* D! T4 D/ N" \. X" X. p* [' c* [8 _- p* Z9 N7 [
-ctime n : 在过去n天内被修改过的文件. ~0 I) u- {( q, j: ^9 s& x
- l, O' y z4 H/ w- q6 D
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name4 }9 X3 F( T9 A
6 B+ q( b% x# \-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写0 k! E! c8 L8 _3 K0 q5 o$ v4 J
7 q. R* y; F, u8 R; ?& b5 R! [) \2 I5 V-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写- P$ V/ {3 n1 ]0 {/ Y! i+ I: w; S! n
5 ^5 E( p2 t% W& P) _- A1 M. I2 h/ Y-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。. r3 P. ~ k; w/ M& ~
5 p: o, i+ W: ^* S2 T. S-type c : 文件类型是 c 的文件。
/ K0 ]- F* `4 r) @- C4 U4 ]2 N( J+ p& o& }) k% c/ {: k% N
d: 目录
( U' g$ a' m2 `5 Z8 W! p3 b8 e. t/ h
6 J% q8 x5 V, O l: U- V: g8 ec: 字型装置文件
- y5 i# ?* k, [% h* y/ M/ S1 l
6 b, ]! m( K2 X, mb: 区块装置文件
$ F- q% d/ v9 P7 H; Z: u. q5 C2 O5 B7 Q3 Y7 a
p: 具名贮列
% m8 e7 m1 g2 b9 j3 b( M- Z0 [1 l; v F
f: 一般文件
2 S; r/ @) l$ E4 N( j
! L! z$ R' N1 t* n/ }: c3 D. ql: 符号连结$ O4 z* z, M- N1 e7 T
; q% R6 b8 B7 N4 e Y
s: socket+ I% `) |# T$ ~' L- }' u( y
& W, p7 b; Q( e0 L-pid n : process id 是 n 的文件, d; |$ ?6 ~! B$ c% Q. ^, I
- y) _9 Z0 d% r2 D' i
你可以使用 ( ) 将运算式分隔,并使用下列运算。
: M' \( V1 i: N/ Q: q2 a8 `; e& ]0 x
exp1 -and exp2( y6 q6 }# A2 y8 ~. b3 F' @( ]9 n
) ] P, m' G5 R& S2 M; b! expr
. J% q: T* B' t7 t% z# U
9 [( w# K. \7 B3 P1 G-not expr+ x% {; e' o6 K& P6 `( C( N
/ V$ ^. e5 o# G0 {2 K2 ?
exp1 -or exp2
! u+ [4 G1 q; {+ v* d+ I
2 C8 c0 t4 [: \; K9 b' c+ v7 pexp1, exp2! F: k. v) E7 R& D0 N
- Y: R2 p* d) K) ~1 _4 O# c
实例
9 c3 t( w' q7 V" n% m. k! B将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
& i0 [1 R) L( f& y% N; m
) g3 s& c- n% Y# k+ {# |# find . -name "*.c"
6 W8 c2 K- [. o3 d: N7 t0 C将目前目录其其下子目录中所有一般文件列出
' F7 \5 Q5 y0 j' ~' Y
% ]$ L$ @9 h& `' q# find . -type f/ ~! k. O# K' i) D1 U
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
) k9 q* C( D1 c7 M, J) y& b3 R9 B# q5 ?: W- Z3 k
# find . -ctime -203 ^$ j1 ^( k. |" q
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
, h4 p, Q5 [. n' Q% |# a
( n" y6 p) g. e* L1 t# find /var/log -type f -mtime +7 -ok rm {} \;$ W. c; {9 U W* [) \$ a
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
8 z" }4 b$ o; N* |) a# z2 _: }
" }' I* |& b3 J# f: t% f& w. w# find . -type f -perm 644 -exec ls -l {} \;
! f# w# z# }; l! T; b" \+ e7 }1 A查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:3 W7 p! Y! B; b% A; |* t
4 P+ B/ k7 H/ y$ D% z# find / -type f -size 0 -exec ls -l {} \; |
|