十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
怎么在Linux中使用find命令查找文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
为林甸等地区用户提供了全套网页设计制作服务,及林甸网站建设行业解决方案。主营业务为成都网站设计、网站建设、外贸网站建设、林甸网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
语法:find + 目标目录(路径) + <选项> + 参数
常用选项列表
| 选项 | 含义 |
|---|---|
| -perm <权限数值> | 查找符合指定的权限数值的文件或目录 |
| -type <文件类型> | 只寻找符合指定的文件类型的文件 |
| -name <范本样式> | 指定字符串作为寻找文件或目录的范本样式 |
| -expty | 寻找文件大小为 0 Byte 的文件,或目录下没有任何子目录或文件的空目录 |
| -ls | 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出 |
| -maxdepth <目录层级> | 设置最大目录层级 |
| -mindepth <目录层级> | 设置最小目录层级 |
| -exec <执行指令> | 假设find指令的回传值为true,就执行该指令 |
| -ok <执行指令> | 此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答y或Y,则放弃执行命令 |
示例
首先,给出演示使用的文件结构:

示例 1:查找当前目录及其子目录下所有文件和文件夹
find .

示例 2:在/testLinux目录下查找以.txt结尾的文件名
// 需要书写完整的路径 find /tmp/cg/testLinux -name "*.txt"

示例 3:组合查找文件名以file1开头(与、或、非)file2开头的文件
/** * 组合查找语法: * -a 与(取交集) * -o 或(取并集) * -not 非(同 !) * ! 非(同 not) */ find . -name "file1*" -a -name "file2*" find . -name "file1*" -o -name "file2*" find . -name "file1*" -not -name "file2*" find . -name "file1*" ! -name "file2*"

示例 4:根据文件类型进行搜索
/** * 查找当前目录及所有子目录下的普通文件 */ find . -type f

示例 5:基于目录深度进行搜索
/** * 限制最大深度为 3 */ find . -maxdepth 3 -type f /** * 限制最大深度为 2 */ find . -maxdepth 2 -type f

示例 6:基于文件权限进行搜索
/** * 搜索权限为 777 的文件 */ find . -type f -perm 777 /** * 搜索 .txt 格式且权限不为 777 的文件 */ find . -type f -name "*.txt" ! -perm 777

示例 7:借助-exec命令,将当前目录及子目录下所有.txt格式的文件以File:文件名的形式打印出来
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
示例 8:借助-exec命令,将当前目录及子目录下所有 3 天前的.txt格式的文件复制一份到old目录
find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;
文件类型参数列表
| 文件类型参数 | 含义 |
|---|---|
| f | 普通文件 |
| l | 符号连接 |
| d | 目录 |
| c | 字符设备 |
| b | 块设备 |
| s | 套接字 |
| p | Fifo |
文件大小单元列表
| 文件大小单元 | 含义 |
|---|---|
| b | 块(512 字节) |
| c | 字节 |
| w | 字(2 字节) |
| k | 千字节 |
| M | 兆字节 |
| G | 吉字节 |
选项列表
| 选项 | 含义 |
|---|---|
| -amin <分钟> | 查找在指定时间曾被存取过的文件或目录,单位以分钟计算 |
| -atime <24小时数> | 查找在指定时间曾被存取过的文件或目录,单位以 24 小时计算 |
| -cmin <分钟> | 查找在指定时间之时被更改过的文件或目录 |
| -ctime <24小时数> | 查找在指定时间之时被更改的文件或目录,单位以 24 小时计算 |
| -anewer <参考文件或目录> | 查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录 |
| -cnewer <参考文件或目录> | 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录 |
| -daystart | 从本日开始计算时间 |
| -depth | 从指定目录下最深层的子目录开始查找 |
| -expty | 寻找文件大小为 0 Byte 的文件,或目录下没有任何子目录或文件的空目录 |
| -exec <执行指令> | 假设find指令的回传值为true,就执行该指令 |
| -false | 将find指令的回传值皆设为false |
| -fls <列表文件> | 此参数的效果和指定-ls参数类似,但会把结果保存为指定的列表文件 |
| -follow | 排除符号连接 |
| -fprint <列表文件> | 此参数的效果和指定-print参数类似,但会把结果保存成指定的列表文件 |
| -fprint0 <列表文件> | 此参数的效果和指定-print0参数类似,但会把结果保存成指定的列表文件 |
| -fprintf <列表文件> <输出格式> | 此参数的效果和指定-printf参数类似,但会把结果保存成指定的列表文件 |
| -fstype <文件系统类型> | 只寻找该文件系统类型下的文件或目录 |
| -gid <群组识别码> | 查找符合指定群组识别码的文件或目录 |
| -group <群组名称> | 查找符合指定群组名称的文件或目录 |
| -help或——help | 在线帮助 |
| -name <范本样式> | 指定字符串作为寻找文件或目录的范本样式 |
| -iname <范本样式> | 此参数的效果和指定-name参数类似,但忽略字符大小写的差别 |
| -ilname <范本样式> | 此参数的效果和指定-lname参数类似,但忽略字符大小写的差别 |
| -inum | 查找符合指定的inode编号的文件或目录 |
| -path <范本样式> | 指定字符串作为寻找目录的范本样式 |
| -ipath <范本样式> | 此参数的效果和指定-path参数类似,但忽略字符大小写的差别 |
| -iregex <范本样式> | 此参数的效果和指定-regexe参数类似,但忽略字符大小写的差别 |
| -links <连接数目> | 查找符合指定的硬连接数目的文件或目录 |
| -ls | 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出 |
| -maxdepth <目录层级> | 设置最大目录层级 |
| -mindepth <目录层级> | 设置最小目录层级 |
| -mmin <分钟> | 查找在指定时间曾被更改过的文件或目录,单位以分钟计算 |
| -mount | 此参数的效果和指定-xdev相同 |
| -mtime <24小时数> | 查找在指定时间曾被更改过的文件或目录,单位以 24 小时计算 |
| -newer <参考文件或目录> | 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录 |
| -nogroup | 找出不属于本地主机群组识别码的文件或目录 |
| -noleaf | 不去考虑目录至少需拥有两个硬连接存在 |
| -nouser | 找出不属于本地主机用户识别码的文件或目录 |
| -ok <执行指令> | 此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答y或Y,则放弃执行命令 |
| -perm <权限数值> | 查找符合指定的权限数值的文件或目录 |
| 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式为每列一个名称,每个名称前皆有./字符串 | |
| -print0 | 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式为全部的名称皆在同一行 |
| -printf <输出格式> | 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式可以自行指定 |
| -prune | 不寻找字符串作为寻找文件或目录的范本样式 |
| -regex <范本样式> | 指定字符串作为寻找文件或目录的范本样式 |
| -size <文件大小> | 查找符合指定的文件大小的文件 |
| -true | 将find指令的回传值皆设为true |
| -type <文件类型> | 只寻找符合指定的文件类型的文件 |
| -uid <用户识别码> | 查找符合指定的用户识别码的文件或目录 |
| -used <日数> | 查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算 |
| -user <拥有者名称> | 查找符和指定的拥有者名称的文件或目录 |
| -version或——version | 显示版本信息 |
| -xdev | 将范围局限在先行的文件系统中 |
| -xtype <文件类型> | 此参数的效果和指定-type参数类似,差别在于它针对符号连接检查 |
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。