FIND命令与正则表达式组合.doc_第1页
FIND命令与正则表达式组合.doc_第2页
FIND命令与正则表达式组合.doc_第3页
FIND命令与正则表达式组合.doc_第4页
FIND命令与正则表达式组合.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FIND命令与正则表达式组合查找/etc/rc.d目录下面所有以crond结束的文件,并使用file指令查看其属性,注意:exec和file间是一个空格,file和间是一个空格,file和;之间是一个空格,;是一个整体。要在/usr/linux中查找所有的*.h,并在这些文件中查找SYSCALL_VECTOR,最后打印出所有包含SYSCALL_VECTOR的文件名,有以下几种方法实现find/usr/linux-name*.h|xargs-n50 grep SYSCALL_VECTOR grep SYSCALL_VECTOR/usr/linux/*.h|cut-d:-f1|uniq filename find/usr/linux-name*.h-exec grepSYSCALL_VECTOR;-print我用find/-name filename|rm-rf,不成功,请问为什么不成功?find/-name filename-exec rm-rf;find.-name filename|rm-rf试一下表示你找出来的结果。;则相当于宪法,没什么说头,就是这么规定的,在-exec后面需要一个表示该命令终结的的符号。可以在man find中找到*。要让rm识别find的结果,如下:find/-name filename|xargs rm-rf之所以find.-name filename|rm-rf不通过,是因为rm命令不接受从标准输入传过来的指令查找含特定字符串的文件例如查找当前目录下含有the string you want find.字符串的文件:$find.-type f-exec grepthe string you want find.;-print从根目录开始查tmpfile,一旦查到马上删除find/-nametmpfile-exec rm;find的perm问题请问一下以下命令什么意思?关键是那个数字前的-,其他都还知道find-name.*-perm-007我知道find-name.*-perm 755这个是用来查找权限位为755的隐藏文件噢,对了还有,我上边的命令都省略了find的pathname参数find默认是查找当前工作目录的吗?如果我用-ok替代-exec,那么还需要加上;吗?这个已经清楚,仍然需要,因为-ok只是-exec的提示模式,它只是多了一个确认操作的步骤,刚才没有读懂那几句E文的意思呵呵不好意思-007是指查找所有用户都可读、写、执行的文件,要小心呀解释解释?find-name.*-perm-007和find-name.*-perm 777有区别吗?-007是怎么来得呢?不过有一个问题我用find.-perm-100会列出当前目录.,这是为什么呢?下面引用由explover在2002/10/01 06:15am发表的内容:-007是指查找所有用户都可读、写、执行的文件,要小心呀-007是查找含其它用户(不同组,非属主)可读,写,执行的文件.并不一定要同组可读写,-是指最少权限为007.下面引用由一颗小白菜在2002/10/01 10:16am发表的内容:OK了,呵呵不过有一个问题我用find.-perm-100会列出当前目录.,这是为什么呢?这种方法不会准确的找出目录的.-100是指权限至少是属主可运行.在unix系统下,你可以拥有对目录文件的执行权你才可以进入一个目录.这便是目录文件被列出的原因.find.-perm-001-print找到往往是目录文件.我的意思当然不是使用这种方法来找目录,只不过不明白其中的-100意义了那以此类推,是不是-010是指权限至少是owner同组可执行的吗?也就是说其实这里的010和-是分开的,-表示一个至少的意思,而且010才是真正用来描述权限位的?这样子就明白了谢谢你噢将find出来的东西拷到另一个地方?find*.c-exec cp/tmp;如果有特殊文件,可以用cpio,也可以用这样的语法:find dir-name filename-print|cpio-pdv newdir找出磁盘中某个大小范围内的文件比如要查找磁盘中大于3M的文件:find.-size+3000k-exec ls-ld;如何用find查找某一天更改的文件?可以使用这一行命令来实现:A=find-print|ls-l-full-time$A 2/dev/null|grepJun 27|grep 1998使用find命令查找某个时间段的shell怎么写。比如11点到12点的。thanks创建一个脚本judgetime,内容如下:ls-l$*|awksplit(,hour,:);if(hour123|hour11)&hour124)print到要查找的目录下,运行find./-name*-exec judgetime;注意时间格式为24小时制。thank you,如果我要精确到分钟呢touch-t 04241112 starttemp#精确到12分钟touch-t 04241220 endtemp#截止到12点20 finddir-newer starttemp-a!-newer endtemp-exec ls-l;newer?那昨天12:10文件如何呢?每天执行的时候,用当天的日期和时间戳替换一下不就行了吗?我不知道他是不是把所有的11:0012:00的都找出来,是不是只执行一次还是每天都执行?这种情况俺猜想是自己的东西放在哪忘了,只记得当时是深夜了。有道理!不愧是斑竹!不光知道怎么解决问题,还知道在什么情况下出现这类问题,佩服佩服!问题又出现了。创建这个文件的时候。本来应该是时间的一栏现在写上了2002,而不是12:00.等到12:00过了吧!删除指定日期的文件find./-name文件名-exec rm-f;例:删除当前30天内没用过的文件,用如下命令:find/-atime+30-exec rm-f;我自己试着写了一小段SHELL,也用ll,grep,rm几个命令,用起来还差强人意。对过滤出来的文件名列表中用了一个FOR语句,再执行rm。现在我想把这段SHELL扩展一下让它每天定时运行将n天前的文件删掉,有没有人能给我一些提示,谢谢!还有个问题,对于前面那位朋友提到的find/-atime+30-exec rm-f;方法,我很早就试过几次,不过好像都不太对,参数-atime n是查找n天前被访问过的文件,我不明白的是这里的时间参照点是什么,以及这个n天是怎么计算的。问题二、对于ll|cut-f 1这个命令我是不是用错了,我只想取出ll中列出的文件名,但用cut-f命令做不到,我只好换用ll|cut-c 59-这种方式得到我要的文件名,but its apool idear!我也试过用awk,好像也不对,看看大家可不可以给我一些小小的提醒,TKS SO MUCH问题三、如何改变I结点的日期格式我现在的系统显示的格式是:-rw-r-1 msahz01 users 2253 2002年2月2日poheader.i我想把这换成-rw-rw-rw-1 house users 2193 Apr 19 2001 hkdisp.p如何才能做到这点?awk应该可以ll|awkprint删除多少天之前的文件find/yourpath-mtime+31-exec rm;find/yourpath-mtime+366-exec rm;find中,-ctime,-mtime及其-atime有何区别请问-ctime和-mtime有什么关系?如果父目录的ctime改变,那它下面的文件的ctime就会自动都改了吗?-ctime和-mtime,-atime这些信息是存在哪儿呢?我用-mtime-1找到了新建或改的文件.但怎样才能找到一天内mv来的文件呢(它们的时间是原有的时间,早于一天)?用-newer选项啊。你可以先touch一个你想要的时间的文件如下:$touch-t 08190800 test$ls-l test-rw-r-r-1 dba other 0Aug 19 08:00 test然后$find.-newer test-print./.sh_history$ls-l.sh_history-rw-1 dba other 154 Aug 20 17:39.sh_history用touch可以写出你想要的任何时间的文件,然后用-newer,!-newer选项即可成功。1.ctime含inode信息修改的时间.mtime只指文件内容建立或修改的时间.2不会.3.这些信息应该是存在文件系统的超级块里.我查了书-ctime是指inode的改变(或称文件的状态改变).请问inode存了哪些信息?做了些小测试,-mtime改,-ctime一定也改.改文件名,-ctime也会改.谁能回答i-node存了哪些东西?vi/usr/include/sys/inode.h班主,我不能access/usr/include/sys/inode.h.摘书如下:Directories contain directory entries.Each entry contains afile or subdirectory name and an index node reference number(i-node number).To increase speed and enhance use of disk space,the data in afile is stored at various locations in the computers memory.The i-node contains the addresses used to locate all the scattered blocks of data associated with afile.The i-node also records other information about the file including time of modification and access,access modes,number of links,file owner,and file type.可我发现-atime改了,-ctime还没改.why?(我先cat一个ASCII文件,再用-atime-1有它用-ctime-1居然没有它.)着岂不跟inode信息改变,ctime就改矛盾吗?我不同意你贴出来的那段文章,正如我提到的那样,atime,ctime,mtime是放到超级块里,在sco unix下是一种叫stat的结构.(stat_32),不同的系统文件系统可能不同.sco下inode的结构如下:typedef struct inodestruct inode*i_forw;/*inode hash chain*/struct inode*i_back;/*/struct inode*av_forw;/*freelist chain*/struct inode*av_back;/*/int*i_fsptr;/*typelesspointer to fs dependent*/ino32_t i_number;/*i number,1-to-1 with dev address*/ushort i_ftype;/*file type=IFDIR,IFREG,etc.*/short i_fstyp;/*File system type*/off_t i_size;/*size of file*/ushort i_uid;/*owner*/ushort i_gid;/*group of owner*/ushort i_flag;ushort i_want;/*i_flag extension to avoid MP races*/ushort i_count;/*reference count*/short i_nlink;/*directory entries*/dev_t i_rdev;/*Raw device number*/#define i_namtype i_rdev/*i_ftype=IFNAM subtype*/dev_t i_dev;/*device where inode resides*/struct mount*i_mton;/*ptr to mount table entry that*/*this directory is mounted on*/struct region*i_rp;/*ptr to shared region if any*/struct stdata*i_sp;/*ptr to associated stream*/struct iisem*isem;/*ptr to XENIX semaphores*/struct iisd*isd;/*ptr to XENIX shared data*/i_un;#define i_mnton i_un.i_mton/*i_ftype=IFDIR IMOUNT*/#define i_rptr i_un.i_rp/*i_ftype=IFREG|i_ftype=IFBLK*/#define i_sptr i_un.i_sp/*i_ftype=IFCHR|i_ftype=IFIFO*/#define i_sem i_un.isem/*i_ftype=IFNAM&i_namtype=IFSEM*/#define i_sd i_un.isd/*i_ftype=IFNAM&i_namtype=IFSHD*/struct fstypsw*i_fstypp;/*ptr to file system switch FSPTR*/long*i_filocks;/*pointer to filock(structure)list*/unsigned long i_mappages;/*number of pages currently cached*/unsigned long i_vcode;/*read-ahead block save(NFS)*/short i_wcnt;/*write open count or ITEXT count*/struct lockb i_cilock;/*tas to synchronize i_flag changes*/ushort i_rdlocks;/*count of non-exclusive lockers*/inode_t;所以,访问一个文件不能改变inode信息.使用chown,chgrp,chmod命令可以很好的比较mtime和ctime chown改变一个文件的属主,用ctime可以找到,用mtime便找不到.试试看.多谢斑竹!我是在Solaris上面试的.我是对-ctime不明白.试的结果如下:修改文件,-mtime改了,-ctime也会改.访问文件,-atime改了,-ctime没变.chown,chgrp,chmod,mv,都会使-ctime改变,但不影响-atime和-mtime.touch可以改-mtime and/or-atime,但touch-a只改访问时间时,-ctime也改了.touch-m改修改时间时,-ctime当然也改了.好象还有别的很多东西可以令-ctime改变,搞不清楚.有什么方法可以显示-mtime,atime,ctime吗?可以用-ctime来实现对目录的增量文件进行备份或transfer吗?多谢!没有什么工具显示,(可能是俺不知道)把下面程序里的st_mtime换成st_ctime,或st_atime便可以得到你要的了.#i nclude int main(int argc,char*argv)struct stat buf;char date80;char fname80;printf(Enter filename(with full path)to check mtime:);scanf(%s,fname);stat(fname,&buf);printf(mtime(in sec)of%s=%ldn,fname,buf.st_mtime);strcpy(date,ctime(time_t*)&(buf.st_mtime);printf(mtime(in date)of%s=%sn,fname,date);至于文件备份,有什么不可以的么?mtime ls-l最近修改文件内容的时间atime ls-lu最近访问文件的时间ctime ls-li最近文件有所改变的状态,如文件修改,属性属主改变,节点,链接变化等,应该是不拘泥只是时间前后的改变俺看了ls的帮助,以为只是按ctime或atime排序,显示的时间还是mtime.仔细比较了一下,ayhan说的是对的.谢谢ayhan.多谢ahyan提示!我在Solaris上试过如下:mtime用ls-l看到atime用ls-lu看到ctime用ls-lc看到.(ls-li只有inode number)摘书如下:-c Uses time of last modification of the i-node(file created,mode changed,and so forth)for sorting(-t)or printing(-l or-n).-u Uses time of last access instead of last modification for sorting(with the-t option)or printing(with the-l option).-i For each file,prints the i-node number in the first column of the report.我在sco unix5.0.5中试了一下,好像不对:chmod,chgrp等不会改变ls-il显示的时间;vi,touch倒是有影响。每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击开始-搜索中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。可是使用linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在linux中需要我们使用专用的查找命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。linux中查找文件的命令通常为find命令,find命令能帮助我们在使用,管理linux的日常事务中方便的查找出我们需要的文件。对于linux新手来说,find命令也是了解和学习Linux文件特点的方法。因为linux发行版本繁多,版本升级很快,在Linux书籍上往往写明某个配置文件的所在位置,往往linux新手按图索骥还是不能找到。比如说REDHAT Linux 7.O和REDHAT linux 7.1中有些重要的配置文件所在的硬盘位置和文件目录就有了很大的改变,如果不学会使用find命令,那么在成千上万的linux文件中要找到其中的一个配置文件是相当困难的,笔者在没有精通find命令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的find命令的全部使用方法和用途。通过文件名查找法:这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的ls命令就能方便的查找出来,那么使用find命令来查找它就不能给你留下深刻的印象,毕竟find命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令:find/-name httpd.conf这个命令语法看起来很容易就明白了,就是直接在find后面写上-name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:etc/httpd/conf/httpd.conf这就是httpd.conf这个文件在linux系统中的完整路径。查找成功。如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/-name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find/-name httpd.conf就能找到这个配置文件了。无错误查找技巧:在linux系统中find命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用find命令时也有可能遇到这样的问题,那就是L inux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用find命令来查询这些目录或者文件。当普通用户使用find命令来查询这些文件目录是,往往会出现Permissiondenied.(禁止访问)字样。系统将无法查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入find/-name access_log 2/dev/null这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。在linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型linux系统和容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使用find/etc-name httpd.conf就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下/这个函数符号的含义,如果输入find/就是表示要求linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而find/etc就是只在etc目录下查找文件。因为find/etc表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。根据部分文件名查找方法:这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:find/etc-name*srm*这个命令表明了linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如absrmyz,tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:find/etc-namesrm*这是只有像srmyz这样的文件才被查找出来,象absrmyz或者absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。根据文件的特征查询方法:如果只知道某个文件的大小,修改日期等特征也可以使用find命令查找出来,这和WINDOWS系统中的搜索功能是基本相同的。在微软的搜索中WINDOWS中的搜索助理使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet上搜索更加容易。搜索助理还包括一个索引服务,该服务维护了计算机中所有文件的索引,使得搜索速度更快。使用搜索助理时,用户可以指定多个搜索标准。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用Active Directory,这时还可以搜索带有特定名称或位置的打印机。例如我们知道一个linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询find/-size 1500c,字符c表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在linux中还可以进行模糊查找方式来解决。例如我们输入find/-size+10000000 c这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的+是表示要求系统只列出大于指定大小的文件,而使用-则表示要求系统列出小于指定大小的文件。下面的列表就是在linux使用不同find命令后系统所要作出的查找动作,从中我们很容易看出在linux中使用find命令的方式是很多的,find命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。find/-amin-10#查找在系统中最后10分钟访问的文件find/-atime-2#查找在系统中最后48小时访问的文件find/-empty#查找在系统中为空的文件或者文件夹find/-group cat#查找在系统中属于groupcat的文件find/-mmin-5#查找在系统中最后5分钟里修改过的文件find/-mtime-1#查找在系统中最后24小时里修改过的文件find/-nouser#查找在系统中属于作废用户的文件find/-user fred#查找在系统中属于FRED这个用户的文件下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关linux有关书籍可以知道所有find命令的查找函数。-amin n查找系统中最后N分钟访问的文件-atime n查找系统中最后n*24小时访问的文件-cmin n查找系统中最后N分钟被改变状态的文件-ctime n查找系统中最后n*24小时被改变状态的文件-empty查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹-false查找系统中总是错误的文件-fstype type查找系统中存在于指定文件系统的文件,例如:ext2-gid n查找系统中文件数字组ID为n的文件-group gname查找系统中文件属于gnam文件组,并且指定组和ID的文件Find命令的控制选项说明:Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。选项用途描述-daystart.测试系统从今天开始24小时以内的文件,用法类似-amin-depth使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容-follow遵循通配符链接方式查找;另外,也可忽略通配符链接方式查询-help显示命令摘要-maxdepth levels在某个层次的目录中按照递减方法查找-mount不在文件系统目录中查找,用法类似-xdev.-noleaf禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找-version打印版本数字使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。-maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论