电脑技术学习

FreeBSD命令adjkerntz简介(调节改变CMOS时间)

dn001
find;其实是一个很有用的工具,且常用的工具。

◎find;-;walk;a;file;hierarchy
在一个档案等级制度中游走;顾名思义;也就是搜寻
◎语法:;find;;path;;operators
path:路径;;operators:运算子(参数)

◎operators:;常用的参数如下;(若有疑义请参阅man;page;为准
★号表示重要...;
1.;-atime;n:;用档案存取时间(access)为搜寻条件,n;为数字代表期,
单位是24小时。

★解:;;;;;n不带正负时,表示距今从目前这个期到下个期为止;
n为负号时(-),表示距今这个期之前。
n为正号时(+),表示距今大於这个期的时间。

举例说明:
若n为3(不带正负号),表示距今72~96小时。
若n为-3(带负号),表示距今0~72小时内。;
若n为+3(带正号),表示距今超过72小时,也就是>72小时。

2.-mtime;n:;用档案修改时间(modification)为搜寻条件,n以24小时为期。

3.-ctime;n:;用档案inode更动时间为条件,n以24小时为期。

4.-inum;;n:;用inode值来作为搜寻条件,n为该档案的inode值。;;;;;

5.-name;;filename:後接档案名称,若包含"万用字元",则要括起来,
避免shell解读之。
6.-perm;mode:;以存取权限为搜寻条件。;

7.-user;name:;以档案的所有者为搜寻条件,用uid也可。

8.-group;name:;以档案的群组为搜寻条件,用gid亦可。
:7.8;find会先用name搜寻,若找不到才试着用uid或gid搜寻

9.-type;t:;t的代表的是档案的类型,类型常用的如下:
d;;;-->;;资料夹
f;;;-->;;一般档案
l;;;-->;;符号连结档

10.-size;n:;n表示区块数,通常是512-byte;bolck,
若n後接c;(nc);表示为n;bytes。;

★11.operator1;-a;operator2:;-a;等同於逻辑上的;AND;
operator1;-o;operator2:;-o;等同於逻辑上的;OR
!;operator1;:;!;等同於逻辑上的;NOT

:operator1;-a;operator2;与operator1;operator2
是相同的...同样代表当运算子1成立且运算子2成立

★12.(;expression;):;在杂的情况下,括号表示先运算。
加上反斜线;为的是不要让shell误判。;;

13.-print:;将搜寻结果送到标准输出stdout,一般来说也就是萤幕。
:最常用到;但也常被遗忘的参数。;

★14.-exec;command:;表示将搜寻的结果,再导入某一命令。
:搜寻出的结果可用两个大括号{};替代,命令後接;;;表示结束。

ex:将目前目录;搜寻出档案以.o结尾的档案;删除!!
find;.;-name;"*.o";-exec;rm;-f;{};;;;;

★15.-maxdepth;n:;n;表示搜寻的深度。1表示目前这个资料夹。

★16.-ok;command:;-ok跟-exec相同,不过执行前会询问。通常用来测试。

★17.-newer;file:;比file修改(modification)的时间更早为搜寻条件;;

◎实例应用:
1.修改时间:;假设是此目录;7天前(当天)修改过的档案
find;.;-mtime;7;-print;
find;.;-mtime;+6;-mtime;-8;-print;
2.档案大小:;档案介於於1000byte到32000byte之间;
find;.;-size;+1000c;-size;-32000c;-print

★3.删除某些诡异的档案:;某些档案因含有特殊字元而无法删除,
find;.;-inum;31246;-exec;rm;-rf;{}
:31246为其inode值,可用ls;-i;察看..

★4.以精确的时间搜寻:搜寻2001年5月28日11时59分到2001年5月29日0时10分间所有的档案
a.;touch;-t;200105281159;file1
b.;touch;-t;200105290010;file2
c.;fine;.;-newer;file1;!;-newer;file2;-print;
如此就会搜寻出数个档案;扣除file2的就是所得...

★5.将档案更名:把搜寻出来的更名为
find;.;-maxdepth;1;-name;"*.o";;-exec;mv;{};{}.orig
将档名符合*.o的档案名称附加上.orig

★解:若您第五个无法执行的话也可以这样做:
$find;.;-maxdepth;1;-name;"*.o";|
>;while;read;file
>;do;mv;"$file";"$file".orig
>;done

>;乃是换行後自动出现的提示符号...;;

◎重要观念:
★1.搜寻参数;都是find懂的常规表示法,若表示法为真,就执行一些设定好的动作。

★2.括号中的先运算:;-atime;+5;(;-name;"*.o";-o;-name;"*.tmp";)
表示搜寻;存取时间大於5天;且(名称为*.o或是*.tmp)的档案;

3.规则式中两个运算子间若用空白隔开表示;-a;也就是AND

★4.find任务就是判定整个运算式,而不是找到档案,
当然,会找到档案,但那只是一个副作用。;

5.量不要搜寻NFS档案,因为万一NFS;server;挂了,会让整个搜寻停顿。
可以用-maxdepth;或;-prune;限制;

◎困难排除:

★xargs的使用:;有时您会遇到向下面这种情况...语法无误;但却无法显示
find;/;-print;|;ls;-al;;;;;显示根目录下的所有档案
系统会直接出现Broken;pine;然後就结束了...
或是出现too;many;argument;..则表示输出超出指令列上的长度。
这时就要用到xargs了...整个命令列如下
find;/;-print;|;xargs;ls;-al;
结果就会很顺利的出现..因为xargs将输入一个一个依序输出,
而非一次全部

标签: