【Linux】史上最全的Find命令

Find


功能说明:查找文件或目录。

语  法:find (-$)

参  数 && 说  明:

[目录...]
[-amin <分钟>]                          查找在指定时间曾被存取过的文件或目录,单位以分钟计算
[-anewer <参考文件或目录>]               查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录
[-atime <24小时数>]                     查找在指定时间曾被存取过的文件或目录,单位以24小时计算
[-cmin <分钟>]                          查找在指定时间之时被更改的文件或目录    
[-cnewer <参考文件或目录>]               查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
[-ctime <24小时数>]                     查找在指定时间之时被更改的文件或目录,单位以24小时计
[-daystart]                             从本日开始计算时间
[-depyh]                                从指定目录下最深层的子目录开始查找
[-empty]                                寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录
[-exec <执行指令>]                       假设find指令的回传值为True,就执行该指令
[-false]                                将find指令的回传值皆设为False
[-fls <列表文件>]                        此参数的效果和指定"-ls"参数类似,但会把结果保存为指定的列表文件
[-follow]                               排除符号连接
[-fprint <列表文件>]                    此参数的效果和指定"-print"参数类似,但会把结果保存成指定的列表文件
[-fprint0 <列表文件>]                   此参数的效果和指定"-print0"参数类似,但会把结果保存成指定的列表文件
[-fprintf <列表文件><输出格式>]         此参数的效果和指定"-printf"参数类似,但会把结果保存成指定的列表文件
[-fstype <文件系统类型>]                只寻找该文件系统类型下的文件或目录
[-gid <群组识别码>]                     查找符合指定之群组识别码的文件或目录
[-group <群组名称>]                     查找符合指定之群组名称的文件或目录
[-help]                                 在线帮助
[-ilname <范本样式>]                    此参数的效果和指定"-lname"参数类似,但忽略字符大小写的差别
[-iname <范本样式>]                     此参数的效果和指定"-name"参数类似,但忽略字符大小写的差别
[-inum <inode编号>]                     查找符合指定的inode编号的文件或目录                
[-ipath <范本样式>]                     此参数的效果和指定"-ipath"参数类似,但忽略字符大小写的差别
[-iregex <范本样式>]                    此参数的效果和指定"-regexe"参数类似,但忽略字符大小写的差别
[-links <连接数目>]                     查找符合指定的硬连接数目的文件或目录
[-lname <范本样式>]                     指定字符串作为寻找符号连接的范本样式
[-ls]                                   假设find指令的回传值为True,就将文件或目录名称列出到标准输出
[-maxdepth <目录层级>]                  设置最大目录层级
[-mindepth <目录层级>]                  设置最小目录层级
[-mmin <分钟>]                          查找在指定时间曾被更改过的文件或目录,单位以分钟计算
[-mount]                                此参数的效果和指定"-xdev"相同              
[-mtime <24小时数>]                     查找在指定时间曾被更改过的文件或目录,单位以24小时计算
[-name <范本样式>]                      指定字符串作为寻找文件或目录的范本样式
[-newer <参考文件或目录>]               查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
[-nogroup]                              找出不属于本地主机群组识别码的文件或目录
[noleaf]                                不去考虑目录至少需拥有两个硬连接存在
[-nouser]                               找出不属于本地主机用户识别码的文件或目录
[-ok <执行指令>]                        此参数的效果和指定"-exec"参数类似,但在执行指令之前会先询问用户,若回答"y"或"Y",则放弃执行指令
[-path <范本样式>]                      指定字符串作为寻找目录的范本样式
[-perm <权限数值>]                      查找符合指定的权限数值的文件或目录
[-print]                                假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称之前皆有"./"字符串
[-print0]                               假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行
[-printf <输出格式>]                    假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式可以自行指定
[-prune]                                不寻找字符串作为寻找文件或目录的范本样式
[-regex <范本样式>]                     指定字符串作为寻找文件或目录的范本样式
[-size <文件大小>]                      查找符合指定的文件大小的文件
[-true]                                 将find指令的回传值皆设为True
[-type <文件类型>]                      只寻找符合指定的文件类型的文件
[-uid <用户识别码>]                     查找符合指定的用户识别码的文件或目录
[-used <日数>]                          查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算
[-user <拥有者名称>]                    查找符合指定的拥有者名称的文件或目录
[-version]                              显示版本信息
[-xdev]                                 将范围局限在先行的文件系统中
[-xtype <文件类型>]                     此参数的效果和指定"-type"参数类似,差别在于它针对符号连接检查

补充说明:find指令用于查找符合条件的文件。任何位于参数之前的字符串都将被视为欲查找的目录。

示例

(1)查找48小时内修改过的文件

find -atime -2

(2)在当前目录查找 以.log结尾的文件。 ". "代表当前目录

find ./ -name '*.log'

(3)查找/opt目录下 权限为 777的文件

find /opt -perm 777

扫描二维码关注公众号,回复: 7144770 查看本文章

(4)查找大于1K的文件

find -size +1000c

find -size 1000c 查找等于1000字符的文件

     `-exec         参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{}   花括号代表前面find查找出来的文件名。`

(5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)

find . -type f -mtime +10 -exec rm -f {} ;

(6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除

find . -name '*.log' mtime +5 -ok -exec rm {} ;

(7)当前目录下查找文件名以passwd开头,内容包含"pkg"字符的文件

find . -f -name 'passwd*' -exec grep "pkg" {} ;

(8)用exec选项执行cp命令

find . -name '*.log' -exec cp {} test3 ;

     `-xargs find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。`

(9)查找当前目录下每个普通文件,然后使用xargs来判断文件类型

find . -type f -print | xargs file

(10)查找当前目录下所有以js结尾的并且其中包含'editor'字符的普通文件

find . -type f -name "*.js" -exec grep -lF 'ueditor' {} ;

find -type f -name '*.js' | xargs grep -lF 'editor'

(11)利用xargs执行mv命令

find . -name "*.log" | xargs -i mv {} test4

(12)用grep命令在当前目录下的所有普通文件中搜索hostnames这个词,并标出所在行

find . -name *(转义) -type f -print | xargs grep -n 'hostnames'

(13)查找当前目录中以一个小写字母开头,最后是4到9加上.log结束的文件

find . -name '[a-z]*[4-9].log' -print

(14)在test目录查找不在test4子目录查找

find test -path 'test/test4' -prune -o -print

(15)实例1:查找更改时间比文件log2012.log新但比文件log2017.log旧的文件

find -newer log2012.log ! -newer log2017.log

使用depth选项

depth选项可以使find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。

实例
find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。 它将首先匹配所有的文件然后再进入子目录中查找

find / -name "CON.FILE" -depth -print

猜你喜欢

转载自www.cnblogs.com/BabySermonizer/p/11441231.html