Linux 命令find之查找文件的示例
时间:2019-04-13
本文章向大家介绍Linux 命令find之查找文件的示例,主要包括Linux 命令find之查找文件的示例使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在 Linux 命令中,find
用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,其支持按名称查找、按正则表达式查找、按文件大小查找、按文件权限查找等多种查询方式。如果在使用该命令时,不设置任何参数,则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编号> | 查找符合指定的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参数类似,差别在于它针对符号连接检查 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- POJ 2478Farey Sequence
- cookie、session、token三者使用
- SpringCloud注册中心集群搭建
- SpringCloud配置中心集群搭建
- HDU1846 Brave Game
- 拉格朗日插值
- python爬虫入门(二)Opener和Requests
- python爬虫入门(三)XPATH和BeautifulSoup4
- python爬虫入门(四)利用多线程爬虫
- LOJ #115. 无源汇有上下界可行流
- 数据库改名系列(数据库名,逻辑名,物理文件名)
- BZOJ1468: Tree
- 洛谷P3806 【模板】点分治1
- 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 神经网络-感知器(二):Python代码实现
- Kylin、Druid、ClickHouse 核心技术对比
- 在线教育系统开发中,如何实现作业功能字体自定义?
- 保护模式第六讲-IDT表-中断门 陷阱门 任务门
- 跟牛老师一起学WEBGIS——GIS基础(QGIS中数据的创建与编辑)
- Qt信号与槽使用方法最完整总结
- 玩转 PhpStorm 系列(十二):单元测试篇
- 使用Notepad++代替笨拙的Arduino IDE
- mimikatz的使用
- Arduino数字引脚作为GPIO的使用
- TikTok 用什么算法传输并加密内容?
- 如何编写自己的Arduino库?
- 玩转 PhpStorm 系列(十一):编码风格篇
- 用Arduino剖析PWM脉宽调制
- 猿实战01——vue后台前端框架搭建