find命令学习

  
  
  
  
  1. 功能说明:查找文件或目录。 
  2.  
  3. 语  法:find [目录...][-amin <分钟>][-anewer <参考文件或目录>][-atime <24小时数>][-cmin <分钟>][-cnewer <参考文件或目录>][-ctime <24小时数>][-daystart][-depyh][-empty][-exec <执行指令>][-false][-fls <列表文件>][-follow][-fprint <列表文件>][-fprint0 <列表文件>][-fprintf <列表文件><输出格式>][-fstype <文件系统类型>][-gid <群组识别码>][-group <群组名称>][-help][-ilname <范本样式>][-iname <范本样式>][-inum <inode编号>][-ipath <范本样式>][-iregex <范本样式>][-links <连接数目>][-lname <范本样式>][-ls][-maxdepth <目录层级>][-mindepth <目录层级>][-mmin <分钟>][-mount]  
  4. [-mtime <24小时数>][-name <范本样式>][-newer <参考文件或目录>][-nogroup][noleaf] [-nouser][-ok <执行指令>][-path <范本样式>][-perm <权限数值>][-print][-print0][-printf <输出格式>][-prune][-regex <范本样式>][-size <文件大小>][-true][-type <文件类型>][-uid <用户识别码>][-used <日数>][-user <拥有者名称>][-version][-xdev][-xtype <文件类型>
  5.  
  6. 补充说明:find指令用于查找符合条件的文件。任何位于参数之前的字符串都将被视为欲查找的目录。 
  7.  
  8. 参  数: 
  9.  -amin<分钟>  查找在指定时间曾被存取过的文件或目录,单位以分钟计算。  
  10.  -anewer<参考文件或目录>  查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录。  
  11.  -atime<24小时数>  查找在指定时间曾被存取过的文件或目录,单位以24小时计算。  
  12.  -cmin<分钟>  查找在指定时间之时被更改的文件或目录。  
  13.  -cnewer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。  
  14.  -ctime<24小时数>  查找在指定时间之时被更改的文件或目录,单位以24小时计算。  
  15.  -daystart  从本日开始计算时间。  
  16.  -depth  从指定目录下最深层的子目录开始查找。  
  17.  -expty  寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录。  
  18.  -exec<执行指令>  假设find指令的回传值为True,就执行该指令。  
  19.  -false  将find指令的回传值皆设为False。  
  20.  -fls<列表文件>  此参数的效果和指定"-ls"参数类似,但会把结果保存为指定的列表文件。  
  21.  -follow  排除符号连接。  
  22.  -fprint<列表文件>  此参数的效果和指定"-print"参数类似,但会把结果保存成指定的列表文件。  
  23.  -fprint0<列表文件>  此参数的效果和指定"-print0"参数类似,但会把结果保存成指定的列表文件。  
  24.  -fprintf<列表文件><输出格式>  此参数的效果和指定"-printf"参数类似,但会把结果保存成指定的列表文件。  
  25.  -fstype<文件系统类型>  只寻找该文件系统类型下的文件或目录。  
  26.  -gid<群组识别码>  查找符合指定之群组识别码的文件或目录。  
  27.  -group<群组名称>  查找符合指定之群组名称的文件或目录。  
  28.  -help或--help  在线帮助。  
  29.  -ilname<范本样式>  此参数的效果和指定"-lname"参数类似,但忽略字符大小写的差别。  
  30.  -iname<范本样式>  此参数的效果和指定"-name"参数类似,但忽略字符大小写的差别。  
  31.  -inum<inode编号>  查找符合指定的inode编号的文件或目录。  
  32.  -ipath<范本样式>  此参数的效果和指定"-ipath"参数类似,但忽略字符大小写的差别。  
  33.  -iregex<范本样式>  此参数的效果和指定"-regexe"参数类似,但忽略字符大小写的差别。  
  34.  -links<连接数目>  查找符合指定的硬连接数目的文件或目录。  
  35.  -iname<范本样式>  指定字符串作为寻找符号连接的范本样式。  
  36.  -ls  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。  
  37.  -maxdepth<目录层级>  设置最大目录层级。  
  38.  -mindepth<目录层级>  设置最小目录层级。  
  39.  -mmin<分钟>  查找在指定时间曾被更改过的文件或目录,单位以分钟计算。  
  40.  -mount  此参数的效果和指定"-xdev"相同。  
  41.  -mtime<24小时数>  查找在指定时间曾被更改过的文件或目录,单位以24小时计算。  
  42.  -name<范本样式>  指定字符串作为寻找文件或目录的范本样式。  
  43.  -newer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。  
  44.  -nogroup  找出不属于本地主机群组识别码的文件或目录。  
  45.  -noleaf  不去考虑目录至少需拥有两个硬连接存在。  
  46.  -nouser  找出不属于本地主机用户识别码的文件或目录。  
  47.  -ok<执行指令>  此参数的效果和指定"-exec"参数类似,但在执行指令之前会先询问用户,若回答"y"或"Y",则放弃执行指令。  
  48.  -path<范本样式>  指定字符串作为寻找目录的范本样式。  
  49.  -perm<权限数值>  查找符合指定的权限数值的文件或目录。  
  50.  -print  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称之前皆有"./"字符串。  
  51.  -print0  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行。  
  52.  -printf<输出格式>  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式可以自行指定。  
  53.  -prune  不寻找字符串作为寻找文件或目录的范本样式。  
  54.  -regex<范本样式>  指定字符串作为寻找文件或目录的范本样式。  
  55.  -size<文件大小>  查找符合指定的文件大小的文件。  
  56.  -true  将find指令的回传值皆设为True。  
  57.  -typ<文件类型>  只寻找符合指定的文件类型的文件。  
  58.  -uid<用户识别码>  查找符合指定的用户识别码的文件或目录。  
  59.  -used<日数>  查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算。  
  60.  -user<拥有者名称>  查找符合指定的拥有者名称的文件或目录。  
  61.  -version或--version  显示版本信息。  
  62.  -xdev  将范围局限在先行的文件系统中。  
  63.  -xtype<文件类型>  此参数的效果和指定"-type"参数类似,差别在于它针对符号连接检查。 

当find匹配了一些文件后,可以使用-exec或-ok对其执行一些其他操作

1.find /data -name "*.log" -mtime +5 -ok rm {} \;

查找/data目录下的更改时间在5天以上,扩展名为.log的文件,并删除它们

2.find /etc -name "passwd*" -exec grep "www" {} \;

查找/etc目录下所有以passwd开头的文件,然后将匹配结果交给grep命令,查找这些文件中是否存在一个用户“www”

 

操作下面之前注意系统的date时间
 
find/root/test目录下面从2011年6月1号12点00到2011年6月1号12点30分哪些文件更新过
touch -t 201106011200 start
touch -t 201106011250 stop
 
find /root/test/ -newer start -a ! -newer stop -exec ls -l {} \;

 

3.xargs

find将匹配的文件传递给-exec执行,可能会出现参数列溢出,exec会为匹配到的每一个文件开启一个进程进行处理,会大大的占用系统资源,不建议使用。

而find命令把匹配到的文件,通过管道“|” 传递给xargs,xargs每次只获取一部分文件进行处理,而不是一次获取全部,xargs命令只有一个进程

find / -name "core" -print | xargs echo "" >/tmp/core.log

 4.文件名置换

*  匹配任意字符

?匹配文件名中的单个字符

[...] 匹配[]中所包含的任意字符

[!...] 匹配[]中非感叹号之后的字符

使用?

find . -name "ng???.log.01?" -print | xargs ls -lh
 

使用[...]和[!...]

列出所有以i或o开头的文件
# ls [io]*
 

 

 

find参考

http://liang3391.blog.51cto.com/178205/579153

你可能感兴趣的:(职场,find,休闲)