如何使用Unix/Linuxfind命令
——磨刀不误砍柴工系列
作者:GaryGao,garygaowork#gmail.com
find命令是UNIX程序员的技能中功能最强大和最有用的命令之一。它通过许多强大的支持方式,让文件查找显示任务变得更加轻松。
find命令实例:
1.基于目录/文件名称/文件类型来搜索
在当前目录或子目录中查找所有html文件,我们可以使用:
find -name "*.html" type f
在/usr/bin中查找所有sh文件
find /usr/bin -name "*.sh" -type f
该命令有两个测试条件,第一个,“-name”用于检验搜索过程中的每个文件名,如果你需要对大小写敏感,可以使用“-iname”代替。第二个参数是“-type”,
它用于指定你感兴 趣的文件类型。“f”表示我们查找的是普通文件,我们可以使用“d”表示目录或使用“l”或"s"表示符号连接。在find手册中可以看到该工具的所有选项。
find /-maxdepth 1 -name "*.html" -type f
Tips:将-maxdepth选项放在最前面
默认情况下,find遍历所有子目录,但是你可以通过指定最大深度来控制这个行为。在前面的例子中,如果我们只想搜索这两个目录不想搜索下一层,你可以添加“-maxdepth1”到命令中。设置最大深度为0表示只检验命令行中的给定文件。同样,你可以设定最小深度,从而避免搜索位于根目录的文件。
2.基于用户/用户组来搜索
find的另一个应用是搜索属于某个给定用户的文件,因此为了搜索我的系统中所有属于我的文件,我使用以下命令:
find / -user gary
同样可以搜索基于组用户的文件,使用
“-group”参数。
3.基于文件相关的时间特征来搜索
相关选项:
分别使用“-ctime”,“-atime”和“-mtime”参数来指定最后创建时间,最后访问时间和最后修改时间。(单位是"天")
如果你需要更精确地搜索,可以使用分钟变量“-cmin”,“-amin”和“-mmin”。
find ./ -mtime 0 ;返回最近24小时内修改过的文件。./代表需要查找的文件夹
find ./ -mtime 1 返回的是前48~24小时修改过的文件。而不是48小时以内修改过的文件。
find -ctime -1 搜索最近两天创建的文件
注意:
1前面的“-”表示我们是从今天向以前的日期范围搜索,与数字前面没有"-"是有区别的。如果你刚犯了一个错误但不确定会影响到那些文件,
这很简单可以使用如下查询:find-mmin-5
可以用以下命令查看atime和ctime
ls-lu或者ls-l--time=atime显示文件的atime
ls-lc或者ls-l--time=ctime显示文件的ctime
在提供一个例子,搜索当前目录下前20分钟到10分钟修改过的文件。
find . -mmin +9 -mmin -21
还可以使用"-newer","-anewer","-cnewer"参数来指定一个文件,将其与要搜索的文件进行时间的比较。
•-newer指内容最近被修改的文件
•-anewer指最近被读取过的文件
•-cnewer指状态最近发生变化的文件(查看文件状态命令statfilename)
例如,查找在sum.java之后修改的文件
find -newer "sum.java"
4.基于文件的大小来搜索
例如我们知道一个Linux文件大小为1,500bytes,那么我们可是使用如下命令来查询
find . -size 1500c
字符c表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输入
find . -size +10000000c
这个命令,则标明我们指定系统在根目录中查找出大于
10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,
而使用“-”则表示要求系统列出小于指定大小的文件。
还有很多例子,
搜索大小为10M的文件
find . -size 10M
搜索大于10M的文件
find . -size +10M
找到小于10M的文件
find . -size -10M
要列出所有长度为零的文件,请使用下面的命令:
find . -empty -exec ls {} \; 注意结尾的分号
在查找到空文件之后,您可以选择用rm命令来代替ls命令,以删除这些文件。
5.基于文件的权限来搜索
查找当前目录下所有文件权限为755的文件
find . -perm 755 -print
6.使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and来把两个查找选项链接
起来组合成一个混合的查找方式。
find /tmp -size +10000000c -and -mtime +2
如何搜索修盖时间介于f1与f2各自的修改时间之间的文件?
find . -newer f1 -and ! -newer f2 //f1的修改时间应早于f2的修改时间
学习过计算机语言的朋友都知道,在计算机语言里,使用and,or分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。
还有这样的例子,
find / -user fred -or -user george
我们可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。
在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的
find /tmp ! -user panda
更好的利用find
7.快速执行上一次的find命令而不用重复输入参数
!find
事实上,"!"可以用在任何unix/linux命令的前面,以执行上一条同种类型的命令。
8.改变显示结果
find对文件执行的标准行为是显示出文件名,这就是为什么如果你跟踪结果,就会看到一系列文件名的原因。如果你想使用这些结果作为另外一个过滤器的输入的话,
这将会十分有用。但是如果你需要结果的更多信息,你可以令find输出与ls–l同样的结果:
find -user gary -iname "*.html" -ls
这个命令将会返回文件权限和时间信息。
9.将搜索结果作为程序的输入
可以通过使用“-exec”参数,来让find命令对每个搜索结果运行任何程序。
如果要删除当前目录中所有扩展名为“.tmp”的文件。
find -name ".tmp" -exec rm {} \ ; //注意结尾分号
上面两个大括号将会被相应的文件名代替,反斜杠用来告诉find何时命令结束。
find常和chmod结合使用快速改变大量文件的文件权限,或者和grep与sed结合使用来选择性的搜索或使用正则表达式修改文本。使用它作为一个脚本的输入,
你可以让费时的任务自动完成,例如清除一年内没有访问的文件,或者自动备份修改的文件。
10.查找并显示文件的方法
查找到某个文件是我们的目的,我们更想知道查找到的文件的详细信息和属性,如果我们采取现查找文件,在使用LS命令来查看文件信息是相当繁琐的,
现在我们也可以把这两个命令结合起来使用。
find/-name"httpd.conf"-ls
系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。
1206334-rw-r--r--1rootroot33545Dec3015:36/etc/httpd/conf/httpd.conf
下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法
选项
|
用途描述
|
-execcommand
|
查找并执行命令
|
-fprintfile
|
打印文件完整文件名
|
-fprint0file
|
打印文件完整文件名包括空的文件
|
-fprintffileformat
|
打印文件格式
|
-okcommand
|
给用户命令执行操作,根据用户的Y确认输入执行
|
-printfformat
|
打印文件格式
|
-ls
|
打印同种文件格式的文件
|
参考:
[1].linux/unix中如何用find命令详解
http://www.tongcx.com/node/86
[2].使用UNIXfind命令的高级技术
http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html
[3].10ExampleoffindcommandinUnixandLinux(对find命令的基本用法以及高级技巧都有介绍)
http://javarevisited.blogspot.com/2011/03/10-find-command-in-unix-examples-basic.html
[4].Top10examplesoffindcommandinunixandlinux
http://www.cloudhadoop.com/2012/02/top-10-examples-of-find-command-in-unix.html
[5].FindCommandinUnixandLinuxExamples(极丰富的关于find命令的例子)
http://www.folkstalk.com/2011/12/101-examples-of-using-find-command-in.html
[6].AUnix/Linux“find”CommandTutorial(实用的,短小精悍的教程)
http://content.hccfl.edu/pollock/Unix/FindCmd.htm
注:以上链接如果无法进入,请。
分享到:
相关推荐
操作系统接口:兼容Unix/Linux命令接口。 为Windows操作系统建立一个兼容Unix命令的命令接口;实现命令包括ls,cat,cp,mv,md/mkdir,rd/rmdir,cd,sort,more,print,命令的内容与详细格式请查阅unix命令手册;可以字符...
unix/linux各种命令详解,非常详细
这是《Understanding Unix/Linux Programming》书后光盘资源,这本书非常经典,是学习Unix/Linux的好教材,课后资源含有大量的练习。
2、熟悉UNIX/LINUX的常用基本命令如ls、who、w、pwd、ps、pstree、top等。 3、通过WINDOWS操作系统中的FTP程序,练习WINDOWS和UNIX之间的文件交换。 4、用vi编写一个简单的、显示"Hello,World!"的C程序,用gcc编译并...
最为常用的unix/linux命令的使用, 及其特别以及非常适用于新手
Covering all the essential components of Unix/Linux, including process management, concurrent programming, timer and time service, file systems and network programming, this textbook emphasizes ...
Unix/Linux命令详解
为Unix/Linux操作系统建立兼容的Windows/DOS命令接口,文件与目录命令; 具体命令:DIR(my_ls), RD(my_rd),CD,MD(my_md), DEL,MOVE(my_move),REN(my_ren),XCOPY, PROMPT,SORT(sort),TYPE(my_type),COPY(my_copy),...
某银行的进程池管理代码,,Unix/linux进程池管理
自己整理的unix/linux信号详解大全,很详细。
《UNIX/Linux系统管理技术手册(第四版)》(ULAHv4)是《Linux系统管理技术手册》和《UNIX系统管理技术手册》的终结版,也是Evi Nemeth的封刀之作。 《UNIX/Linux系统管理技术手册(第四版)》延续了《Linux系统管理...
Unix/Linux 命令参考
Unix/Linux 编程实践 附录光盘
《Unix\Linux编程实践教程》通过解释Unix的工作原理,循序渐进地讲解实现Unix中系统命令的方法,让读者理解并逐步精通Unix系统编程,进而具有编制Unix应用程序的能力。书中采用启发式、举一反三、图示讲解等多种方法...
Unix/linux 挂载 usb 移动硬盘 命令 看完包你知道怎么在unix或者linux下挂载各种设备。
非常值得收藏的windows下可用的Unix/Linux命令行工具
Unix,Linux中sed命令的详解。
Unix/Linux基础讲义.doc
网络学习空间应用研究——以《Unix_Linux系统编程》课程为例.pdf