温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Linux中使用find命令查找文件

发布时间:2021-04-09 16:04:40 来源:亿速云 阅读:198 作者:Leah 栏目:服务器

怎么在Linux中使用find命令查找文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

语法:find + 目标目录(路径) + <选项> + 参数

常用选项列表


选项含义
-perm <权限数值>查找符合指定的权限数值的文件或目录
-type <文件类型>只寻找符合指定的文件类型的文件
-name <范本样式>指定字符串作为寻找文件或目录的范本样式
-expty寻找文件大小为 0 Byte 的文件,或目录下没有任何子目录或文件的空目录
-ls假设find指令的回传值为ture,就将文件或目录名称列出到标准输出
-maxdepth <目录层级>设置最大目录层级
-mindepth <目录层级>设置最小目录层级
-exec <执行指令>假设find指令的回传值为true,就执行该指令
-ok <执行指令>此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答y或Y,则放弃执行命令

示例

首先,给出演示使用的文件结构:

怎么在Linux中使用find命令查找文件

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

find .

怎么在Linux中使用find命令查找文件

示例 2:在/testLinux目录下查找以.txt结尾的文件名

// 需要书写完整的路径
find /tmp/cg/testLinux -name "*.txt"

怎么在Linux中使用find命令查找文件

示例 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*"

怎么在Linux中使用find命令查找文件

示例 4:根据文件类型进行搜索

/**
 * 查找当前目录及所有子目录下的普通文件
 */

find . -type f

怎么在Linux中使用find命令查找文件

示例 5:基于目录深度进行搜索

/**
 * 限制最大深度为 3
 */

find . -maxdepth 3 -type f

/**
 * 限制最大深度为 2
 */

find . -maxdepth 2 -type f

怎么在Linux中使用find命令查找文件

示例 6:基于文件权限进行搜索

/**
 * 搜索权限为 777 的文件
 */

find . -type f -perm 777

/**
 * 搜索 .txt 格式且权限不为 777 的文件
 */

find . -type f -name "*.txt" ! -perm 777

怎么在Linux中使用find命令查找文件

示例 7:借助-exec命令,将当前目录及子目录下所有.txt格式的文件以File:文件名的形式打印出来

find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;

怎么在Linux中使用find命令查找文件

示例 8:借助-exec命令,将当前目录及子目录下所有 3 天前的.txt格式的文件复制一份到old目录

find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;

怎么在Linux中使用find命令查找文件

文件类型参数列表

文件类型参数含义
f普通文件
l符号连接
d目录
c字符设备
b块设备
s套接字
pFifo

文件大小单元列表

文件大小单元含义
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编号>查找符合指定的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 <权限数值>查找符合指定的权限数值的文件或目录
-print假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式为每列一个名称,每个名称前皆有./字符串
-print0假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式为全部的名称皆在同一行
-printf <输出格式>假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式可以自行指定
-prune不寻找字符串作为寻找文件或目录的范本样式
-regex <范本样式>指定字符串作为寻找文件或目录的范本样式
-size <文件大小>查找符合指定的文件大小的文件
-true将find指令的回传值皆设为true
-type <文件类型>只寻找符合指定的文件类型的文件
-uid <用户识别码>查找符合指定的用户识别码的文件或目录
-used <日数>查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算
-user <拥有者名称>查找符和指定的拥有者名称的文件或目录
-version或——version显示版本信息
-xdev将范围局限在先行的文件系统中
-xtype <文件类型>此参数的效果和指定-type参数类似,差别在于它针对符号连接检查

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI