Linux命令之查找文件find

概述

find 命令可以在目录层次结构中搜索符合指定条件的文件或目录,并且可以它们执行指定的操作。而搜索条件可以是文件权限、文件类型、日期、大小等。

在这里插入图片描述

语法

该命令的语法如下:

# find 命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足条件的文件并对之采取相关的操作
find [指定起始目录] 查找条件 [操作]

该命令支持的选项有:

选项说明
-mount, -xdev只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n在过去 n 分钟内被读取过
-anewer file比文件 file 更晚被读取过的文件
-atime n在过去 n 天内被读取过的文件
-cmin n在过去 n 分钟内被修改过
-cnewer file比文件 file 更新的文件
-ctime n在过去 n 天内创建的文件
-mtime n在过去 n 天内修改过的文件
-empty空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name文件名称符合 name 的文件。iname 会忽略大小写
-size n文件大小 是 n 单位
-type c文件类型是 c 的文件

使用

按文件名查找文件

按文件名查找文件支持的选项有:

选项说明
-name <指定文件名>按指定文件文件名查找文件
-iname <指定文件名>按指定文件文件名查找文件,但忽略文件名的大小写

命令格式如下:

# 语法
find 指定起始目录 -name 指定文件名
# 示例
find /root/ -name test.txt 
find /root/ -iname TEST.txt

在这里插入图片描述

按扩展名查找文件

按扩展名搜索文件与按名称搜索文件相同,都是使用 -name 选项,但需要用到通配符 *,如要匹配所有以 .txt 后缀结尾的文件,就要写成 -name *.txt。如果要查与正则表达式不匹配的所有文件,可以加上 -not 选项,即如果要查找所有不以 .txt 后缀结尾的文件,就要写成 -not -name *.txt

选项说明
-not EXPR 不与正则表达式 EXPR 匹配的情况

语法如下:

# 语法
# 查找指定目录下所有以指定后缀结尾的文件
find 指定起始目录 -name *指定后缀
# 查找指定目录下所有不以指定后缀结尾的文件
find 指定起始目录 -not -name *指定后缀
# 示例
# 查找 /root/abc/ 目录下所有以 .txt 为后缀结尾的文件
find /root/abc/ -name *.txt
# 查找 /root/abc/ 目录下所有不以 .txt 为后缀结尾的文件
find /root/abc/ -not -name *.txt

在这里插入图片描述

按文件类型查找文件

有时您可能需要搜索特定文件类型,例如常规文件、目录或符号链接。在 Linux 中,一切都是文件。要根据文件类型搜索文件,请使用 -type 选项和以下描述符之一来指定文件类型:

文件类型描述符说明
f一个普通文件
d目录
l符号链接
c字符设备
b块设备
pFIFO
ssocket 文件

语法格式如下:

# 语法
find 指定起始目录 -type 文件类型描述符 
# 示例,查找 /root/abc/ 目录下所有普通文件
find /root/abc/ -type f

在这里插入图片描述

按大小查找文件

要根据文件大小查找文件,使用 -size 选项与大小标准一起传递。可以使用以下后缀来指定文件大小:

文件大小标识后缀说明
b512字节块,默认
c字节
w两字节
k千字节
M兆字节
G千兆字节

我们可以查找文件大小恰好等于、小于或大小指定大小的文件,其命令格式如下:

# 语法
find 指定起始目录 -size [+-]大小[文件大小标识后缀]
# 示例
# 在 /root/ 目录下查找文件大小等于 10 字节的文件
find /root/ -size 10c
# 在 /root/ 目录下查找文件大小小于 1MB 的文件,其中减号表示小于
find /root/ -size -1M
# 在 /root/ 目录下查找文件大小大于 1MB 的文件,其中加号表示大于
find /root/ -size +1M
# 在 /root 目录下查找文件大小在 1MB 和 21MB 之间的文件
find /root -size +1M -size -21M

在这里插入图片描述

注:

  • +20 表示 20 之后,如 21、22、23 等。
  • -20 表示 20 之前,如 19、18、17 等。
  • 20 表示恰好是 20。

按时间查找文件

我们可以通过文件的修改时间和访问时间来查找文件,跟文件时间有关的选项有:

选项说明
-amin N查找 N 分钟前被访问过的所有文件
-atime N查找 N 天前被访问过的所有文件
-cmin N查找 N 分钟前文件状态被修改过的所有文件
-ctime N查找 N 天前文件状态被修改过的所有文件
-mmin N查找 N 分钟前文件内容被修改过的所有文件
-mtime N查找 N 天前文件内容被修改过的所有文件

示例如下:

# 查找 /root/ 目录下 3 天前文件内容被修改过的文件
find /root/ -mtime 3 

在这里插入图片描述

按权限查找文件

如果想要根据权限来查找文件,那么得使用 -perm 选项:

# 语法
find 指定起始目录 -perm 表示权限的数字
# 示例,查找 /root/ 目录下所有具有可读可写可执行权限的文件
find /root/ -perm 777

在这里插入图片描述

按所有者查找文件

如果我们要查找指定所有者或所属组的文件,那么可以使用以下选项:

选项说明
-gid N查找组 id 是 N 的所有文件
-uid N查找用户 id 是 N 的所有文件
-group 组名查找属于指定用户组的所有文件
-user 用户名查找属于指定用户的所有文件

示例如下:

# 查找 /root/ 目录下所有属于用户 zs 的文件
find /root/ -user zs

在这里插入图片描述

逻辑运算符组成的复合条件

该命令还支持用逻辑运算符 notandor 组成的复合条件。各逻辑运算符说明如下:

逻辑运算符说明举例例子说明
and逻辑与,在命令中用选项 -a 表示,是默认选项,表示当所有条件都满足时,查找条件才匹配find /root/ -name test.txt -user 'zs'查找 /root/ 目录下文件名为 test.txt 并且是 zs 创建的文件
or逻辑或,在命令中用选项 -o 表示,表示当只要有一个条件被满足时,查找条件就匹配find /root/ -name test.txt -o -user 'zs'查找 /root/ 目录文件名为 test.txt 或者是由 zs 创建的文件
not逻辑非,在命令用 ! 表示,表示查找不满足给定条件的文件find /root/ ! -name test.txt查找 /root 目录下所有文件名不少 test.txt 的文件

在这里插入图片描述

注:当由多个逻辑选项时,可以用括号把这些逻辑选项括起来。但为了避免 Shell 本身对括号引起误解,在话号前需要加转义字符 \ 来去除括号的意义。例:find /root/ \(-name test.txt -user 'zs' \)

对找到的文件执行操作

我们可以对找到的文件直接执行操作,那么支持的选项有:

选项说明
-exec 命令名称 {} \;对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{} 表示命令的参数即为所找到的文件;命令的末尾必须以 \; 结束。
ok 命令名称 {} \;对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。

示例如下:

# 在 /root/ 目录下查找文件名为 test.txt 文件,找到之后统计该文件的行数
find /root/ -name test.txt -exec wc -l {} \;

在这里插入图片描述

查找隐藏文件

在 Linux 系统中凡是文件名或目录名是以 . 开头的都是隐藏文件。通过 ls 命令是看不到的,必须通过 ls -a 才能看到这些隐藏的文件。
在这里插入图片描述
如果只是通过 find 命令是会找出所有文件的,包括隐藏文件和非隐藏文件。但有时候如果我们想要只查找隐藏或只查找非隐藏文件,就必须结合 grep 命令一起使用才能达到想要的效果。因为隐藏文件是 . 开头的,所以根据这个特性,用正则表达式去匹配,但是在正则表达式中 . 是有特殊含义的,所以要进行转义 \.。命令格式如下:

# 只查找指定目录下的所有隐藏文件
# `\.` 表示匹配普通的点字符 `.`;而 `\` 又是特殊字符需要进行转义就是 `\\.`;而由于 find 命令查询的结果是文件路径,所以隐藏文件的点字符的前一个字符是 `/`
find 指定目录 -type f | grep "/\\."
# 示例,查找 /home 目录下的所有隐藏文件
find /home -type f | grep "/\\."

在这里插入图片描述

# 只查找指定目录下的所有非隐藏文件
# `\.` 表示匹配普通的点字符 `.`;而 `\` 又是特殊字符需要进行转义就是 `\\.`;而由于 find 命令查询的结果是文件路径,所以隐藏文件的点字符的前一个字符是 `/`
# -v 选项表示除匹配项之外的所有项
find 指定目录 -type f | grep -v "/\\."
# 示例,查找 /home 目录下的所有隐藏文件
find /home -type f | grep -v "/\\."

在这里插入图片描述

参考资料:

  • Find Command in Linux (Find Files and Directories)
  • find 命令
  • 菜鸟教程-Linux find 命令
  • find命令详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/350905.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

项目经理高效时间管理6大原则及技巧

1、 ( 10 2 ) * 5法则 项目经理以10分钟为一个周期&#xff0c;每个周期休息2分钟&#xff0c;这样1小时重复5次&#xff0c;就可以保障我们目标明确但精神和身体上的精力不会透支。 10分钟周期内&#xff0c;需要全心全意做一件事&#xff0c;进入全身心投入工作状态&#xf…

TDEngine3.0 环境安装、配置及使用经验总结

TDEngine3.0 环境安装、配置及使用经验总结 一、TDengine 介绍二、TDengine的下载三、TDengine Server安装及配置3.1 安装3.2 taos的参数配置3.3 启动3.4 taosAdapter 四、TDengine Client 安装4.1 linux客户端安装4.2 windows客户端安装 五、TDEngine3.x的使用总结 一、TDengi…

modelandview 跳转问题_ModelAndView 跳转的使用

路径&#xff1a; 学习springmvc ModelAndView的使用&#xff0c;之前一直仿别人ModelAndView的代码&#xff0c;都是好用的&#xff0c;自己建工程学了下&#xff0c;发现 new ModelAndView("jsp1/0724/myDialog")的时候跳转不过去 配置文件&#xff1a; /** * aut…

SpringMVC笔记--5处理响应数据ModelAndView

第5章 处理响应数据 5.1 SpringMVC 输出模型数据概述 对于MVC框架来说模式数据是最重要的&#xff0c;因为控制C是为了产生模型数据M&#xff0c;而视图V则是为了渲染模型数据。 如何将模型数据暴露给视图是Spring MVC框架的一项重要工作&#xff0c;Spring MVC提供了多种途…

浅入浅出 iptables 网络隔离原理

01 iptables简介 iptables ipfirewall&#xff08;内核1.x时代&#xff09; ipchains&#xff08;内核2.x时代&#xff09; iptables 网络协议栈 Link Layer 数据链路层的数据流向&#xff0c;根据mac寻址找到对应的网卡后向上进入网络层 Network Layer 网络层的数据流向&am…

ModelAndView 详解

当控制器处理完请求时&#xff0c;通常会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet。 因此&#xff0c;经常需要在控制器中构造ModelAndView对象。ModelAndView类提供了几个重载的构造器和一些方便的方法&#xff0c; 让你可以根据…

ModelAndView

ModelAndView 前提 首先梳理一下Spring Web MVC处理http请求的大致过程&#xff1a; 当http请求到来时&#xff0c;DispatcherServlet负责将请求进行分发。DispatcherServlet可以认为是Spring提供的前端控制器&#xff0c;所有的请求都要经过它来统一分发。 在DispatchServle…

SpringMVC中的Model和ModelAndView详解

原文链接&#xff1a; 0.前言 1.Model是什么? model是”模型“的意思&#xff0c;是MVC架构中的”M“部分&#xff0c;是用来传输数据的。 2.ModelAndView是什么&#xff1f; 如果翻译过来就是”模型和视图“&#xff0c;可以理解成MVC架构中的”M“和”V“&#xff0c;其…

5.1 - Web漏洞 - XSS漏洞详解

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 XSS漏洞 一、什么是XSS&#xff1f;二、XSS概述三、靶场练习四、XSS使用步骤五、XSS攻击类…

影响代理ip纯净度的原因及目标网站如何识别代理ip

网络上代理ip很多&#xff0c;但真正可以为我们所用的大部分都是付费ip&#xff0c;那为什么免费ip不能为我们所用呢&#xff1f;下面我们就纯净度和目标网站是如何识别代理ip来分析一下。 一、纯净度 ip纯净度是什么意思呢&#xff1f;简单一点开始就是指使用这个ip的人少&…

如果你当架构师,从0开始,如何做一个后台项目的架构?

前言 在40岁老架构师 尼恩的读者社群(50)中&#xff0c;很多小伙伴要拿高薪&#xff0c;这就要面试架构师&#xff0c;要完成架构的升级&#xff0c;进入架构赛道。 在架构师的面试过程中&#xff0c;常常会遇到下面的问题&#xff1a; 如果给你一个项目要你从0到1做架构&…

数字化艺术时代的新趋势:虚拟数字展厅的崛起

引言&#xff1a; 艺术与技术的融合正带领我们进入一个全新的数字化艺术时代。在这个时代中&#xff0c;虚拟数字展厅正在以惊人的速度崛起&#xff0c;并引领着展览的新趋势。 一&#xff0e;虚拟数字展厅的定义和特点 虚拟数字展厅是一种基于虚拟现实和全景技术的数字化艺术…

pycharm2018如何关闭自动更新提示

1.点击左上角File,如图进入Settings(或者按CtrlAlts) 2.搜索到updates选项,把Automatically check updates for(自动检查更新以…规则) 前面够选去掉即可.

两天搞定计算机专业毕业设计,附源码

两天搞定计算机专业毕业设计&#xff0c;附源码 适用者毕设专业 使用要求具备基本Unity 基本操作小白即可&#xff0c;无需编码 博主诉求快乐毕业 点赞 关注 收藏 资源说明Free资源太多了&#xff0c;看截图目录就知道了 适用者 毕设专业 鄙人也是计算机狗一只&#xff0c;会…

电脑关闭自动更新

1.winr 打开运行窗口输出services.msc,点击确定 2.在服务窗口中&#xff0c;我们找到Windows update选项,双击打开 3.在启动类型选择禁用 4.点击上面的恢复&#xff0c;在恢复选项里面&#xff0c;我们把第一、第二、后续失败&#xff0c;都改为无操作&#xff0c;后点击应用…

ubuntu20关闭自动更新

1、在GUI上关闭自动更新。设置-关于-软件更新-更新&#xff0c;能关的关&#xff0c;不能关的改成最低频率。 2、阻止软件更新弹窗&#xff08;眼不见为净~&#xff09; 打开终端执行命令&#xff1a; sudo chmod a-x /usr/bin/update-notifier 如果想恢复弹窗执行下面的命令…

vscode配置html页面自动刷新,Vscode关闭自动更新设置

如何关闭Vscode自动更新&#xff1f; 有时侯在使用Vscode时会发现自己都不知道它就自已更新了&#xff0c;如何关闭Vscode的自动更新呢&#xff1f;下面介绍一下关闭Vscode自动更新的方法步骤&#xff1a; 打开Vscode&#xff0c;点击文件》首选项》设置&#xff0c;在打开的设…

关闭Postman v5.0自动更新

Postman大约每1个月&#xff0c;就会在后台更新一次&#xff0c;这种更新是可以屏蔽的。 在Postman的[设置]页面 --> Update —> Disable 即可&#xff0c;如图(1)所示。 图(1) 设置自动更新为Disabled 需要说明的是&#xff0c;此操作只对Postman v5.0以下的版本有效&am…

Chrome浏览器如何关闭自动更新

首先是【右键计算机->管理】&#xff0c;在【计算机管理(本地)->系统工具->任务计划程序->任务计划程序库】中找到两个和Google自动更新相关的任务计划【GoogleUpdateTaskMachineCore】与【GoogleUpdateTaskMachineUA】&#xff0c;并把它俩禁用掉。印象中介绍这方…

Windows Server 2016关闭自动更新

场景描述 平时使用系统时总提示需要更新系统&#xff0c;而更新系统后发现有些功能会出现新的异常&#xff0c;故而关闭自动更新的需求产生&#xff0c;这里介绍如何再Windos server 2016中关闭自动更新~ 解决方法 Step 1&#xff1a;进入cmd&#xff0c;之后输入sconfig St…