find [-H] [-L] [-P] [-Olevel] [-D help| tree| search| stat| rates| opt| exec] [路径] [表达式]

  find是查找文件的命令,与文件内容无关

  默认路径为当前目录;默认表达式为 –print

  表达式可能由下列成分组成:操作符、选项、测试表达式以及动作。

(一).选项

-H、-L、-P三个选项主要用来处理符号链接

-H 表示只跟随命令行中指定的符号链接

-L 表示跟随所有的符号链接

-P 是默认选项,表示不跟随符号链接

-O启用查询优化,后面紧跟一个数字(没有空格)。0等同于1;1默认优化级别,对应于传统的行为。表达式被重新排序,以便仅基于文件名(例如-name和-regex)的测试首先执行;2任何-type或-xtype测试都是在任何基于文件名的测试之后执行的,但在任何需要inode(索引节点)信息的测试之前执行;3在此优化级别,完整的基于成本的查询优化器已启用。测试的顺序被修改,以便首先执行便宜的(快速的)测试,并且如有需要稍后执行更昂贵的测试。

-D 用来显示调试信息。help解释调试(-D)选项;tree显示表达式树的原始和优化形态;search以详细的方式浏览目录树;stat使用stat和lstat系统调用来检查文件的打印信息,find程序试图将这种调用最小化;rates打印一个概要,表示每个predicate(谓词?)成功或失败的频率;opt打印与优化表达式树相关的诊断信息,请参阅-O选项;exec显示与-exec,-execdir,-ok和-okdir相关的诊断信息

(二).表达式

(1).操作符

优先级递减;未做任何指定时默认使用-and(EXPR=expression=表达式)

(EXPR) 括号优先级最高,首先对括号内的求值

! EXPR 对EXPR表达式的值取反

-not EXPR 同上,但是POSIX不支持

EXPR1 EXPR2 不加任何运算符,相当于两者之间加and,即与运算,两个表达式值都为true整个才true。先对expr1表达式求值,若为false,则不对expr2求值。

EXPR1 -a EXPR2 同上

EXPR1 -and EXPR2 同上,但是POSIX不支持

EXPR1 -o EXPR2 表示expr1和expr2两个表达式的值求或,左右两个值只要有一个true,整个表达式就是true。先对expr1表达式求值,若为true,则不对expr2求值。

EXPR1 –or EXPR2 同上,但是POSIX不支持

EXPR1,EXPR2 逗号表达式。expr1和expr2都会求值,但是只返回expr2的值,expr1的值会被丢弃。

(2).选项

位置选项

-daystart 从当日起始时,而不是从24小时之前,计算时间

-follow 不检索符号链接。隐含-noleaf,废弃参数,用-Linux代替

-regextype 设置正则表达式的类型,默认类型emacs,posix-awk、posix-basic、posix-egrep和posix-extended

普通选项

-depth 从指定目录下最深层的子目录开始查找

--help 帮助

-maxdepth <LEVELS(目录层级)>设置最大目录层级

-mindepth <LEVES(目录层级)>设置最小目录层级

-mount 在查找时不跨越文件系统的mount点(挂载点),与-xdev相同

-noleaf 不去考虑目录至少需要有两个硬链接存在

--version 显示版本信息

-xdev 不进入处于其他的文件系统的目录

-ignore_readdir_race 通常来讲统计一个文件时失败会抛出一个err,如果打开这个选项,则会屏蔽该错误信息

-noignore_readdir_race 关闭-ignore_readdir_race效果

(3).测试表达式

+N 是比N大

-N 是比N小

N 正好是N

以下所有N都代表上面的-N,+N和N

-admin <N(分钟)> 对文件的最近一次访问是在N分钟前

-anewer <FILE(参考文件)> 对参考文件的最近一次访问比file修改时间要晚。如果命令行中-follow在-anewer之前,(也只有在这种情况下)-anewer会受到-follow的影响

-atime <N(24小时数)> 对文件的最近一次访问是在N*24小时之前

-cmin <N(分钟)> 对文件状态的最近一次修改是在N分钟之前

-cnewer <FILE(参考文件)> 对参考文件状态的最近一次修改比File修改时间晚。如果命令行中-follow在-cnewer之前,(也只有在这种情况下)-cnewer会受到-follow的影响

-ctime <N(24小时数)> 对文件状态的最近一次修改是N*24小时

-empty文件是空的,可以是普通文件或目录

-false 总是false

-fstype <TYPE(文件系统类型)> 查找TYPE类型的文件系统中的文件。这些文件系统类型通常可以在/etc/fstab中找到,该配置文件中包含本系统中有关文件系统的信息。有效的文件系统类型在不同的版本的Unix中是不同的;一些Unix中不完全的文件系统类型列表是这样的:utf,4.2,4.3,nfs,tmp,mfs,S51K,S52K。你可以使用-printf加上%F来查看你的文件系统类型。

-gid <N(群组识别码)> 查找符合群组识别码的文件

-group <GNAME(群组名称)>查找符合群组名称的文件(允许组群识别码)

-ilname <PATTERN(范本样式)> 与-lname类似,但匹配时不区分大小写

-iname <PATTERN(范本样式)> 与-name类似,但匹配时不区分大小写

-inum <N(inode编号)> 查找符合指定的inode编号的文件

-ipath <PATTERN(范本样式)> 与-path类似,但匹配时不区分大小写。(与-iwholename相同,提示部分系统提示已弃用)

-iregex <PATTERN(范本样式)> 与-regex类似,但匹配时不区分大小写

-iwholename <PATTERN(范本样式)> 与-wholename类似,但不区分大小写

-links <N(连接数目)> 查找符合指定N个硬链接的文件

-lname <PATTERN(范本样式)> 指定PATTERN字符串为查找符号链接的范本样式,元字符不会对’/’和’.’做处理

-mmin <N(分钟)> 文件数据的最后一次修改时间在N分钟之前

-mtime <N(24小时数)> 文件数据的最后一次修改在N*24小时之前

-name <PATTERN(范本样式)> 按照文件名查找文件。指定PATTERN字符串为查找文件的范本样式,元字符’*?[]’不会匹配文件名的开头。使用-prune来略过一个目录及其中的文件。查看-path的描述中的范例

-newer <FILE(参考文件或目录)>对文件的最后一次修改比FILE修改时间要晚。如果命令行中-follow在-newer之前,(也只有在这种情况下)-newer会受到-follow的影响

-nouser 找出不属于本地主机用户识别码的文件

-nogroup 找出不属于本地主机群组识别码的文件

-path <PATTERN(范本样式)> 指定PATTERN字符串为查找文件的范本样式,元字符不会对’/’和’.’做处理

-perm [ +-]MODE 按照文件权限来查找文件。查找指定权限数值(或符号)的文件。MODE是刚好满足权限不多不少;-MODE是设置的权限必须满足,没有设置的权限可以有,可以没有;+MODE是三类用户分别拥有的三种权限,只要满足其中任意一个用户得任意一个权限即可(部分满足),没有设置的权限可以有,可以没有。+MODE和之后的/MODE相同

-regex <PATTERN(范本样式)> 指定PATTERN字符串为查找文件的范本样式,是路径上的匹配。

-readable 匹配可读的文件

-writable匹配可写的文件

-executable 匹配可执行的文件

-wholename <PATTERN(范本样式)> 参见-path

-size N[ bcwkMG] 查找指定文件大小的文件,1字节c,2字节w,块(512字节)b千字节k,兆字节M,吉字节G。

-true 总是true

-type [ bcdpflsD] 根据文件类型进行搜索。f普通文件,l符号链接,d目录,c字符设备,b块设备,s套接字,p命名管道(FIFO),D(Solaris持有)

-uid <N(用户识别码)> 查找符合指定用户识别码的文件

-used <N(天数)> 查找文件最后一次存取是最后一次修改的N天后

-user <UNAME(拥有者名称)> 查找符合指定拥有者名称的文件

-xtype [ bcdpfls] 与-type类似,只不过它针对的是符号链接

-context CONTEXT 安全的文件上下文匹配模式(只限SELinux)

(4).动作

-delete 删除,成功返回true,失败返回err信息。如果删除失败,find最终退出码非0,使用-delete自动打开-depth选项

-exec COMMAND ;  执行COMMAND。查找到的所有结果将被作为参数提供给命令,直到遇到一个有';'组成的参数为止。命令的参数中,字符串'{}'将以正在处理的文件名替换。所有的'{}'都会被替换,不仅是在单独的一个参数中。有些版本的find不是这样做的。这些参数可能需要用'\'来转义或用括号括住,防止被展开。命令是从起始目录开始执行的。

(注意:一般使用方法是-exec COMMAND {} \;)

-exec COMMAND {} +  是-exec动作执行的一个变体,为选定的文件执行指定的命令,但是命令行是通过在末尾添加每个选定的文件名来构建的。调用命令的总数将远少于匹配文件的数量。命令行的构建方式与xargs构建它命令行的方式大致相同。命令里只允许有一个"{}"的实例。该命令从起始目录执行的。

-execdir COMMAND ;  与-exec类似,但指定的命令从子目录开始执行,包括匹配的文件

-execdir COMMAND {} +  与-exec类似,但指定的命令从子目录开始执行,包括匹配的文件

-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

-ls 返回true在标准输出中列出'ls -dils'查看的文件

-ok COMMAND ;  类似-exec但是会先向用户询问(在标准输出);如果回应不是以'y'或'Y'起始则不会运行COMMAND而是返回false;

-okdir COMMAND  类似-ok但是从子目录开始执行

-print 返回true;在标准输出打印文件全名,然后一个换行符

-print0 返回true;在标准输出打印文件全名,然后一个null字符。这样可以使得处理find的输出的程序可以正确地理解带有换行符的文件名。

-printf FORMAT 返回true;在标准输出打印FORMAT,解释'\'转义和'%'指令。字段宽度和精度可以像C函数'printf'那样来指定。与-print不同的是,-printf在字符串末端不会添加一个新行。(转义和指令请看第五大项)

-prune 如果没有给出-depth则返回true,不进入当前目录(排除当前目录)。如果给出-depth则返回false,没有效果。

-quit 立即退出。没有任何子进程将保持运行,但不会处理命令行中指定的更多路径

(5).转义及指令

\a 警告铃声

\b 回退

\c 立即停止以当前格式输出,刷新输出设备

\f 表格结束

\n 新行

\r 回车

\t 水平tab

\v 竖直tab

\\ 输出自身'\'

\NNN ASCII编码是NNN(八进制)的字符

%% 输出自身'%'

%a 文件最后一次存取的时间。格式是C函数'ctime'返回值的格式。

%Ak 文件最后一次存取的时间。格式以k指定,可是'@'或者是C函数'strftime'的指令格式。下面列出可用值,有些不是在所有系统上都可用。

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.00 .. 61.00)。有一个小数部分。
                      T 时间, 24小时制 (hh:mm:ss)
                      + 日期和时间,以'+'分隔,例如'2004-04-28 + 22:22:05.0'。这是一个GNUplot扩展。时间在当前时区中给出(可能受设置TZ环境变量的影响)。秒字段包含小数部分
                      X 语言环境的时间表示(H:M:S)
                      Z 时区(例如EDT),或者如果没有时区是可确定的,则为空
                     Date fields:
                      a 地区缩写工作日名称(Sun..Sat)
                      A 地区完整工作日名称,可变长度(Sunday..Saturday)
                      b 地区缩写月份名称(Jan..Dec)
                      B 地区完整月份名称,可变长度(January..December)
                      c 地区的日期和时间(Sat Nov 04 12:02:33 EST 1989).格式与(3)相同,因此为了保持与该格式的兼容性,秒字段中没有小数部分
                      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

下一篇Linux命令之find(二)

Linux命令之find(一)的更多相关文章

  1. Linux实战教学笔记04:Linux命令基础

    第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...

  2. 像黑客一样使用 Linux 命令行

    前言 之前在博客园看到一篇介绍 IntelliJ IDEA 配置的文章,它里面用的是 gif 动态图片进行展示,我觉得很不错.所以在我今天以及以后的博文中,我也会尽量使用 gif 动图进行展示.制作 ...

  3. 11 个很少人知道但很有用的 Linux 命令

    Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有 ...

  4. Linux命令随笔

    Linux命令总结 man ==命令帮助; help ==命令的帮助(bash的内置命令); ls ==list,查看目录列表; -ld:查看目录权限; -l:(long)长格式显示属性; -F:给不 ...

  5. linux命令在线手册

    下面几个网址有一些 Linux命令的在线手册,而且还是中文的,还可以搜索.非常方便 Linux命令手册 Linux命令大全 Linux中文man在线手册 每日一linux命令

  6. 常用的一些linux命令

    最近接触到一些linux环境部署的事情,下面分享一些最近使用的比较频繁的一些linux命令~ 1.一次性移动多个文件到一个文件夹里 mv  被移动文件名 -t 目标文件夹 如:mv a.txt b.t ...

  7. 测试或运维工作过程中最常用的几个linux命令?

     大家在测试工作过程中,可能会遇到需要你去服务器修改一些配置文件,譬如说某个字段的值是1 则关联老版本,是0则关联新版本,这时候你可能就需要会下vi的命令操作:或者查看session设置的时长,可能需 ...

  8. 每天一个 Linux 命令(21):find命令之xargs

    在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出 ...

  9. 在windows下使用linux命令,GnuWin32的使用.

    http://sourceforge.net/projects/getgnuwin32 使用过linxu的伙计估计都会喜欢上linux各种各样强大的命令如:grep, sed,awk,diff和pat ...

  10. 我常用的那些linux命令

    我常用的那些linux命令 用linux也有些年头了,说来也忏愧,说是有些年头了,其实也还是个不长进的主.记得第一次接触linux是boss跟我说的怎么操作,什么编辑模式,按i,a,o进入编辑模式.在 ...

随机推荐

  1. 【题解】APIO2007动物园

    首先一眼感受到这题特别的性质……5个?这么小的,感觉就像是状压.脑补了一下,如果没有环的话应该很好做吧……有环怎么办?5真的很小的,随便乱搞肯定也可以.那就放在外面暴力枚举吧.然后正解就出来了. 然而 ...

  2. 网络编程:listen函数

    listen函数仅由TCP服务器调用,它做两件事: 当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字.listen函数把一个未连 ...

  3. json 串转成 java 对象再拼接成前台 html 元素

    获取商品参数 json 串,转成 java 对象,再拼接成前台 html 的Service方法 @Override public String getItemParam(Long itemId) { ...

  4. Codeforces Round #520 (Div. 2) B. Math

    B. Math time limit per test:1 second memory limit per test:256 megabytes Description: JATC's math te ...

  5. ViewData和ViewBag的那些事

    既然结论是“共享着相同的数据”,那我们就证实一下吧. 看来结论是正确的. 去查看定义,发现他们的类型是不一样的,ViewData是ViewDataDictionary,ViewBag是dynamic. ...

  6. hadoop 架构

  7. c++(类继承)示例[仅用于弱弱的博主巩固知识点用哦,不好勿喷]

    测试代码: Animals.h: #pragma once #include<string> class Animals { protected: std::string Food; in ...

  8. float/文档流

    float : left | right | none | inherit; 文档流是文档中可显示对象在排列时所占用的位置. 浮动的定义: 使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻 ...

  9. 哈希Hash在字符串中的应用_C++

    本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任 哈希大家都会用撒,字符串显然都会写撒,那么哈希离散化字符串不就懂了?!(XXX的神逻辑,其实原文是:树都晓得吧,数组显然都会开呀,那么恭喜 ...

  10. CDLinux 自动休眠功能的关闭方法

    CDLinux 自动休眠功能的关闭方法: 控制台下使用xset命令来完成. xset q  可以查看当前屏幕保护和电源管理的状态信息 具体设置时,常用的有以下参数: xset s  //这个参数设置屏 ...