find - 递归地在层次目录中处理文件

总
find [path...] [expression] 描
这个文档是GNU版本 find 命令的使用手册。 find 搜索目录树上的每一个文件名,它从左至右运算给定的表达式,按照优先规则(见运 算符OPERA‐
TORS一节)进行匹配,直到得出结果(左边运算在 '与' 操作中得出假, 在'或' 操作中得出真),然后 find 移向下一个文件名。 第一个以 '-' , '(' , ')' , ',' 或 '!' 这些字符起始的参数是表达式的开始; 在它之前的任何参数是要搜索的路径,在它之后的任何参数都是表达式的余下部分。
如果没有路径参数,缺省用当前目录。如果没有表达式,缺省表达式 用 '-print'. 当所有文件都成功处理时 find 退出并返回状态值0。如果发生错误则返回一个大于0的值。 表
表达式是由选
返回一个真值或假值) 组成。它们都以运算符分开.忽 略运算符的时候,默认使用 -and 连接. 如果表达式没有包含 -prune 以外的动 作,当表达式为真时会执行 -print
动作。 选
所有的选项都总是返回真值,它们总会被执行,除非放在表达式中执行不到的地方。 因此,清楚起见,最好把它们放在表达式的开头部分。 -daystart
从当日起始时开始而不是从24小时之前,计算时间(for -amin, -atime, -cmin, -ctime, -mmin, and -mtime)。 -depth 先处理目录的内容再处理目录本身。 -follow
不检索符号链接。隐含了 -noleaf。 -help, --help
列出 find 的命令行用法的概要,然后退出。 -maxdepth levels
进入命令行参数指定的目录下层目录时,最深不超过levels(一个非负整数) 层。`-maxdepth 0' 意味着只在命令行参数指定的目录中执行测试和动作。 -mindepth levels
不在levels(一个非负整数)层之内执行任何测试和动作。`-mindepth 1'意 味着处理所有的文件,除了命令行参数指定的目录中的文件。 -mount 不进入处于其它文件系统之上的目录。可以用-xdev代替,从而和一些其他版本的 find 兼容。 -noleaf
不为“目录中子目录数量比硬连接数少2”这种假设做优化。这个选项在搜索那些不遵 循UNIX文件系统链接约定的文件系统时用,比如CD-ROM,MS-DOS文件系统或AFS卷的
加载点。在普通的UNIX文件系统中,每个目录至少有两个硬连接,它的名字和它 的 '.' 条目。另外,它的子目录(假如有)还会各有一个 '..' 链接到它。在 find
检索一个目录时,发现子目录数比它的连接数少二时,它就知道目录中的其他条目 并非目录(而是目录树中的叶(`leaf')节点)。除非需要检索的是这个叶节点,否则
没必要去处理它。这样可以带来很大的搜索速度提升。 -version, --version
打印find的版本号然后退出。 -xdev 不进入处于其他文件系统之上的目录。 测
数字参数可以这样给出: +n 是比 n 大, -n 是比 n 小, n 正好是 n 。 -amin n
对文件的最近一次访问是在 n 分钟之前。 -anewer file
对文件的最近一次访问比 file 修改时间要晚。如果命令行中 -follow 在 -anewer 之前,(也只有在这种情况下) -anewer 会受 -follow 的影响。 -atime n
对文件的最近一次访问是在 n*24 小时之前。 -cmin n
对文件状态的最近一次修改是在 n 分钟之前。 -cnewer file
对文件状态的最近一次修改比 file 修改时间要晚。如果命令行中 -follow 在 -cnewer 之前,(也只有在这种情况下) -cnewer 会受 -follow 的影响。 -ctime n
对文件状态的最近一次修改是在 n*24 小时之前。 -empty 文件是空的普通文件或者空目录。 -false 总是false。 -fstype type
文件处于 type 类型的文件系统之上。有效的文件系统类型在不同版本的Unix中是不同的;一些Unix中的不完全的文件系统类型列表是这样:ufs, 4.2, 4.3, nfs, tmp,
mfs, S51K, S52K. 你可以用 -printf 加上 %F 指令来查看你的文件系统的类型。 -gid n 文件的数字形式的组ID是 n。 -group gname
文件属于 gname (也允许使用数字形式的组ID). -ilname pattern
和 -lname 类似,但是匹配时是不区分大小写的。 -iname pattern
和 -name 类似,但是匹配时是不区分大小写的。例如,`fo*' and `F??' 模式与文件名 `Foo', `FOO', `foo', `fOo' 等等相匹配。 -inum n
文件的 i 结点数是 n。 -ipath pattern
和 -path 类似,但是匹配时是不区分大小写的。 -iregex pattern
和 -regex 类似, 但是匹配时是不区分大小写的。 -links n
文件有 n 个链接。 -lname pattern
文件是一个与pattern 匹配的符号链接。元字符不会对`/' 或 `.' 做特殊处理。 -mmin n
对文件数据的最近一次修改是在 n 分钟之前。 -mtime n
对文件数据的最近一次修改是在 n*24 小时之前。 -name pattern
基本的文件名(将路径去掉了前面的目录)与shell模式pattern相匹配。元字符(`*', `?', 还有`[]' ) 不会匹配文件名开头的`.' 。使用 -prune
来略过一个目录及其中的文件。查看 -path 的描述中的范例。 -newer file
对文件的最近一次修改比 file 修改时间要晚。如果命令行中 -follow 在 -newer 之前,(也只有在这种情况下) -newer 会受 -follow 的影响。 -nouser
没有符合文件的数字形式的用户ID的用户。 -nogroup
没有符合文件的数字形式的组ID的组。 -path pattern
文件名与shell模式pattern相匹配。元字符不会对`/' 或 `.' 做特殊处理。因此,例如:
find . -path './sr*sc'
如果存在 './src/misc' 的话,会将它打印出来。想要忽略一个完整的目录树,应当使用-prune 而不是检查目录树中所有的文件。例如:要跳过 'src/emacs'
目录和其中所有的文件和子目录,把其他找到的文件打印出来,应当这样:
find . -path './src/emacs' -prune -o -print -perm mode
文件的权限位恰好是 mode (八进制或符号)。 Symbolic modes use mode 0 as a point of departure. -perm -mode
所有的权限位 mode 都被设置了的文件。 -perm +mode
任何权限位 mode 被设置了的文件。 -regex pattern
文件名与正则表达式 pattern 匹配。这是对整个路径的匹配,不是搜索文件。例如,要匹配名为`./fubar3' 的文件,可以使用正则表达式 `.*bar.' 或者
`.*b.*3',但是不能用`b.*r3'。 -size n[bckw]
文件使用了 n 单位个存储单元。默认的单位是512字节的块,也可以用n后面加上 `b' 来指定这个值。其他的单位是字节,如果在 n 后面加上 `c'
;千字节(kB),如果在 n 后面加上`k' ;两字节的字,如果在 n 后面加上 `w' 。大小不会计入 indirect blocks,但是会计入没有真正分配空间的疏松文件中的块。 -true 总是true。 -type c
文件是 c 类型的。类型可取值如下: b 特殊块文件(缓冲的) c 特殊字符文件(不缓冲) d 目录 p 命名管道 (FIFO) f 普通文件 l 符号链接 s 套接字 D 门 (Solaris 特有) -uid n 文件的数字形式的用户ID是 n 。 -used n
文件最后一次存取是在最后一次修改它的状态的 n 天之后。 -user uname
文件的所有者是 uname (也可以使用数字形式的用户ID). -xtype c
和 -type 相同,除非文件是一个符号链接。对于符号链接:如果没有给出 -follow ,如果文件是一个指向 c 类型文件的链接,那么返回true;如果给出了 -follow
,如果 c 是 `l' 那么返回true。换句话说,对于符号链接,-xtype 检查那些 -type 不检查的文件。 动
-exec command ;
执行 command;如果命令返回状态值0,那么 exec 返回true。所有 find 其余的命令行参数将作为提供给命令的参数,直到遇到一个由 `;'
组成的参数为止。命令的参数中,字符串 `{}' 将以正在处理的文件名替换。所有的 `{}' 都会被替换,不仅是在单独的一个参数中。有些版本的 find 不是这样做的。
这些参数可能需要用 `\' 来escape 或者用括号括住,防止它们被shell展开。命令是从起始目录执行的。 -fls file
返回true;类似 -ls 但是像 -fprint 那样写入 file。 -fprint file
返回true;将文件全名打印到文件 file 中。如果运行 find 时 file 不存在,那么它将被创建。如果它存在,它将被覆盖。文件名``/dev/stdout''
和``/dev/stderr'' 会作特殊处理;它们分别指的是标准输出和标准错误输出。 -fprint0 file
返回true;类似 -print0 但是像 -fprint 那样写入 file。 -fprintf file format
返回true;类似 -printf 但是像 -fprint 那样写入 file。 -ok command ;
类似 -exec 但是会先向用户询问 (在标准输入); 如果回应不是以 `y' 或 `Y' 起始则不会运行 command 而是返回false。 -print 返回true;在标准输出打印文件全名,然后是一个换行符。 -print0
返回true;在标准输出打印文件全名,然后是一个null字符。这样可以使得处理 find 的输出的程序可以正确地理解带有换行符的文件名。 -printf format
返回true;在标准输出打印 format , 解释 `\' escape 还有 `%' 指令。字段宽度和精度可以像C函数 `printf' 那样来指定。与 -print 不同的是, -printf
在字符串末端不会添加一个新行。可用的escape 和指令如下: \a 警告铃声 \b 回退 \c 立即停止以当前格式输出,刷新输出设备。 \f 表格结束 \n 新行 \r 回车 \t 水平tab \v 竖直tab \\ 输出自身`\' \NNN ASCII编码是NNN(八进制)的字符 在一个 `\' 字符后面使用任何其他字符会被作为普通的字符,因此它们都会被打印出来。 %% 输出自身`%' %a 文件最后一次存取的时间。格式是C函数 `ctime' 返回值的格式。 %Ak 文件最后一次存取的时间。格式以 k 指定,可以是 `@' 或者是C函数 `strftime' 的指令格式。下面列出了 k
可用的值;有一些并不是在所有系统上都可用,因为不同系统中 `strftime' 也不同。 @ 从 Jan. 1, 1970, 00:00 GMT 起的秒数 时间字段: H 小时 (00..23) I 小时 (01..12) k 小时 ( 0..23) l 小时 ( 1..12) M 分钟 (00..59) p 本地的 AM 或者 PM r 12小时格式的时间 (hh:mm:ss [AP]M) S 秒 (00..61) T 24小时格式的时间 (hh:mm:ss) X 本地的时间表示方法 (H:M:S) Z 时区(例如,EDT),如果不能决定时区就是空 日期字段: a 本地一星期中每天的名称的缩写(Sun..Sat) A 本地一星期中每天的全名,可变长度 (Sunday..Saturday) b 本地每月的名称的缩写 (Jan..Dec) B 本地每月的全名,可变长度 (January..December) c 本地的日期和时间表示 (Sat Nov 04 12:02:33 EST 1989) d 一个月当中的日子 (01..31) D 日期 (mm/dd/yy) h 与 b 相同 j 一年当中的日子 (001..366) m 月份 (01..12) U 以星期日作为每周起始,一年当中的星期 (00..53) w 一星期当中的日子 (0..6) W 以星期一当作每周起始,一年当中的星期 (00..53) x 本地的日期表示 (mm/dd/yy) y 年份的最后两位 (00..99) Y 年份 (1970...) %b 文件大小,以512字节的块为单位 (四舍五入)。 %c 文件状态最后一次修改的时间。格式是C函数 `ctime' 返回值的格式。 %Ck 文件状态最后一次修改的时间。格式以 k 指定,类似于%A。 %d 文件在目录树中的深度;0 意味着文件是一个命令行参数。 %f 去掉了前面的目录的文件名 (只剩下最后的成分)。 %F 文件所在文件系统的类型;这个值可以为 -fstype 所用。 %g 文件的组名,如果组没有名称就是数字形式的组ID。 %G 文件的数字形式的组ID。 %h 文件名的前面的目录部分 (仅除去最后的成分)。 %H 据以找到了文件的命令行参数。 %i 文件的 i 结点号(16进制)。 %k 文件大小,以1kB 的块为单位 (四舍五入)。 %l 符号链接的目标 (如果文件不是一个符号链接,那么结果是空字符串)。 %m 文件的权限位 (8进制)。 %n 文件的硬连接数。 %p 文件名。 %P 文件名,去掉了据以找到了文件的命令行参数的名称部分。 %s 文件大小,以字节为单位。 %t 文件最后一次修改的时间。格式是C函数 `ctime' 返回值的格式。 %Tk 文件最后一次修改的时间。格式以 k 指定,类似于%A。 %u 文件的用户名,如果用户没有名称就是数字形式的用户ID。 %U 文件的数字形式的用户ID。 在一个 `%' 字符后面使用任何其他字符,`%' 将被忽略 (但是其他字符会被打印出来)。 -prune 如果没有给出 -depth 则返回 true; 不进入当前目录。
如果给出了 -depth 则返回false; 没有效果。 -ls 返回true;以 `ls -dils' 格式在标准输出列出文件。块以1kB 字节为单位计数,除非设置了环境变量POSIXLY_CORRECT,那样的话会使用 512字节的块。 运
以优先级高低顺序排列: ( expr )
强制为优先 ! expr 如果 expr 是false则返回true -not expr
与 ! expr 相同 expr1 expr2
与 (隐含的默认运算符);如果 expr1 为false则不会执行 expr2 expr1 -a expr2
与 expr1 expr2 相同 expr1 -and expr2
与 expr1 expr2 相同 expr1 -o expr2
或;如果 expr1 为true 则不会执行 expr2 expr1 -or expr2
与 expr1 -o expr2 相同 expr1 , expr2
列表;expr1 和 expr2 都会被执行。expr1 的值被忽略,列表的值是 expr2的值 参

find用法的更多相关文章

  1. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  2. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  3. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  4. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  5. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  6. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  7. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  8. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

  9. 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)

    vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...

  10. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

随机推荐

  1. SVN 记录冲突、忽略

    之前对SVN不熟悉,一碰到冲突就怕得要死,不知道应该怎么处理.今天必须要正视这个问题,研究一下. 一.冲突 SVN非常智能,它不像VSS那样,一个人在改的时候必须以独占的方式签出文件,导致其他人不能够 ...

  2. java SimpleDateFormat

    心碎了.

  3. 织梦dedecms中html和xml格式的网站地图sitemap制作方法

    sitemap是网站上各网页的列表.创建并提交sitemap有助于百度(Google)发现并了解您网站上的所有网页,包括百度通过传统抓取方式可能找不到的网页.还可以使用sitemap提供有关你网站的其 ...

  4. Track files and folders manipulation in Windows

    The scenario is about Business Secret and our client do worry about data leakage. They want to know ...

  5. MVC_学习笔记_2_Authorize

    MVC5_学习笔记_2_Authorize/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) *//* Author: Nico ...

  6. MAC OS下免费下载YouTube

    YouTube上有很多不错的视频,你感兴趣的视频除了可以加入自己播放列表之外,还可以将其下载到本地收藏起来.推荐这款软件“Xilisoft Download YouTube Video for Mac ...

  7. linux安装桌面环境(GNOME)VNC连接Linux

    1.安装Gnome桌面 这里是使用的脚本安装.代码如下:  加附件 #!/bin/sh #This script is FREE and written by www.vpsyou.com   # i ...

  8. 【转】Javascript 严格模式详解

    ref: http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 一.概述 除了正常运行模式,ECMAscript 5添加 ...

  9. [leetcode]_Climbing Stairs

    我敢保证这道题是在今早蹲厕所的时候突然冒出的解法.第一次接触DP题,我好伟大啊啊啊~ 题目:一个N阶的梯子,一次能够走1步或者2步,问有多少种走法. 解法:原始DP问题. 思路: 1.if N == ...

  10. (转)Arcgis API常用接口调用方法

    var map, navToolbar, editToolbar, tileLayer, toolbar;//var mapBaseUrl = "http://localhost:8399/ ...