Find -name详解

Linux find命令的基本语法如下:
find [path] [expression]
path:要查找的目录路径。
expression:查找表达式,指定要查找的文件类型、名称、大小等条件

例子:find /etc -name 'passwd'
这个表达式,指定条件为找到文件名是passwd的文件。对于find命令,最需要学习的是表达式这一段。表达式决定了我们要找的文件是什么属性的文件,还可以指定一些“动作”,比如将匹配某种条件的文件删除。所以,find命令的核心就是表达式(EXPRESSION)的指定方法。
find命令中的表达式有四种类型,分别是:
Tests:就是我们最常用的指定查找文件的条件。
Actions:对找到的文件可以做的操作。
Global options:全局属性用来限制一些查找的条件,比如常见的目录层次深度的限制。
Positional options:位置属性用来指定一些查找的位置条件。

查找文件类型

要查找特定类型的文件,您可以使用Linux find命令的-type选项。例如,如果您要查找所有的文本文件,可以使用以下命令:
find /path/to/search -type f -name "*.txt"
在上面的命令中:
/path/to/search是您要查找的目录路径。
-type f表示要查找的是文件类型。
-name "*.txt"表示要查找以.txt结尾的文件。* 代表模糊查询

查找文件名称

如果您知道要查找的文件的名称,可以使用-name选项来查找它。例如,要查找名为file.txt的文件,可以使用以下命令:
find /path/to/search -type f -name "file.txt"
在上面的命令中,-name选项指定要查找的文件名为file.txt。

查找文件大小

要查找特定大小的文件,您可以使用-size选项。例如,要查找大小为10MB的文件,可以使用以下命令:
find /path/to/search -type f -size 10M
在上面的命令中,-size选项指定要查找的文件大小为10MB。

查找最近修改的文件

如果您想查找最近修改的文件,可以使用-mtime选项。例如,要查找最近7天内修改过的文件,可以使用以下命令:
find /path/to/search -type f -mtime -7
在上面的命令中,-mtime选项指定查找最近7天内修改过的文件。

-mtime n:查找文件修改时间,单位是天,就是n*24小时。

find / -mtime 7 -ls

我们为了方便看到结果,在这个命令中使用了-ls参数,具体细节后面会详细解释。再此我们只需要知道这个参数可以将符合条件的文件的相关属性显示出来即可。那么我们就可以通过这个命令看到查找到的文件的修改时间了。

  524295      4 drwxr-xr-x  12  root     root         4096 6月  8 13:43 /root/.config
  524423      4 drwxr-xr-x   2  root     root         4096 6月  8 13:43 /root/.config/yelp
  524299      4 drwxr-xr-x   2  root     root         4096 6月  8 13:23 /root/.config/dconf
  524427      4 -rw-r--r--   1  root     root         3040 6月  8 13:23 /root/.config/dconf/user

我们会发现,时间都集中在6月8号,不加”-“的话指定的是,找到了距离现在7个24小时之前修改过的文件。如果我们在考究一下细节的话,可以使用这个命令再将找到的文件用时间排下顺序:

find / -mtime 7 -exec ls -tld {} \+

我们会发现,找到的文件实际上是集中在6月7日的14:30到6月8日的14:30这个范围内的。就是说,实际上,指定7天的意思是说,找到文件修改时间范围属于距离当前时间7个24小时到8个24小时之间的文件,这是不加任何+-符号的7的含义。

find / -mtime -7 -exec ls -tld {} \+

从现在开始到7个24小时范围内的文件。但是不包括7个24小时到8个24小时的时间范围。

这就是find指定时间的含义。类似的参数还有:

-ctime:以天为单位通过change time查找文件。

-atime:以天为单位通过access time查找文件。

-mmin:以分钟为单位通过modify time查找文件。

-amin:以分钟为单位通过access time查找文件。

-cmin:以分钟单位通过change time查找文件。

这些参数都是指定一个时间数字n,数字的意义跟mtime完全一样,只是时间的单位和查找的时间不一样。

查找空文件或目录

要查找空文件或目录,可以使用-empty选项。例如,要查找空目录,可以使用以下命令:
find /path/to/search -type d -empty
在上面的命令中,-type d指定查找的是目录类型,-empty选项指定查找空目录。

查找权限

要查找特定权限的文件,可以使用-perm选项。

-executable:文件可执行。

-readable:文件可读。

-writable:文件可写。

-perm mode:查找权限为mode的文件,mode的写法可以是数字,也可以是ugo=rwx的方式

例如,要查找所有用户可读、可写和可执行的文件,可以使用以下命令:
find /path/to/search -type f -perm 777
在上面的命令中,-perm选项指定要查找的文件权限为777,这意味着所有用户都具有读、写和执行权限。

组合选项

您可以将多个选项组合在一起来查找更精确的结果。例如,要查找所有的图片文件(.jpg或.png)和大小不超过1MB的文件,可以使用以下命令:
find /path/to/search -type f \( -name "*.jpg" -o -name "*.png" \) -size -1M
在上面的命令中,(和)用于将-name选项组合在一起,表示查找以.jpg或.png结尾的文件;-size选项指定查找大小不超过1MB的文件。
ps:使用-o作为逻辑 OR 条件的选项运行一次

-exec

find命令的exec是一个非常好用的参数,当然其可能造成的破坏也可能非常大。在学习它之前,我先要提醒大家,使用之前千万要确定自己在做什么。

这个参数的常见格式是:

-exec command ;

注意后面的分号。它是用来给find做标记用的。find在解析命令的时候,要区分给定的参数是要传给自己的还是要传给command命令的。所以find以分号作为要执行命令所有参数的结束标记。命令返回值为0则返回true。在exec参数指定的执行命令中,可以使用{}符号表示当前find找到的文件名。比如:

find /etc/ -name 'passwd' -exec echo {} \;
/etc/default/passwd
/etc/pam.d/passwd
/etc/passwd

上面的命令表示,找到/etc/目录下文件名为passwd的文件,并echo其文件名。注意再使用分号的时候前面要加转移字符\,因为分号也是bash的特殊字符,所以bash会先解释它。前面加上\就可以让bash直接将其船体给find命令,这个分号由find解释,而不是bash。其实这个exec用的比较废话,毕竟find本身就会找到相关条件的文件并显示其文件名。但是试想如果我们将echo换成rm或者cp,是不是就有意义的多?比如:

find /etc/ -name 'passwd' -exec rm {} \;

请不要执行这个命令!!

或者:

find /etc/ -name 'passwd' -exec cp {} {}.bak \;

这个命令可以将符合条件的文件都加个.bak后缀备份一份。于是我们可以执行删除了:

find /etc/ -name 'passwd.bak' 
/etc/default/passwd.bak
/etc/pam.d/passwd.bak
/etc/passwd.bak
find /etc/ -name 'passwd.bak' -exec rm {} \;
find /etc/ -name 'passwd.bak'

当然,删除前还是要确认清楚你要删的文件一定是对的。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进阶Docker4:网桥模式、主机模式与自定义网络

目录 网络相关 子网掩码 网关 规则 docke网络配置 bridge模式 host模式 创建自定义网络(自定义IP) 网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。 IP 地…

【踩坑日志】SpringBoot读取nacos配置信息并提取信息中的IP地址(配置属性解析异常+排错记录)

缘起 :项目需读取nacos中动态的TDengine数据库连接信息并提取IP,一个并不复杂的操作,但作为一个nacos知识浅薄的菜鸡,我愣是捯饬了几个小时……惭愧惭愧…… 异常代码 Data Component public class TaosLink { // Value("…

ICC2:channel power plan/power switch的添加方法

更多学习内容请关注「拾陆楼」知识星球 拾陆楼知识星球入口 往期文章链接: low power与pg strategy (lib cell pin connect) low power与pg strategy(pg mesh) low power与pg

深度解析Pytest插件pytest-html

在软件开发中,测试报告是开发者获取测试结果和问题定位的关键工具之一。然而,标准的控制台输出有时难以满足我们对测试报告的需求。幸运的是,Pytest插件 pytest-html 提供了一种简单而强大的方式,可以生成漂亮、可视化的HTML格式测…

Opencv小项目——手势数字刷TIKTOK

​ 写在前面: 很久没更新了,之前的实习的记录也算是烂尾了,但是好在自己的实习记录还是有的,最近也忙碌了很多,终于放假了,今天下午正好没事,闲来无事就随便做个小玩意吧。 思来想去&#xff…

VLAN区域间路由详解

LAN局域网 WAN 广域网 WLAN无线局域网 VLAN:虚拟局域网 交换机和路由器,协同工作后,将原来的一个广播域,切分为多个,节省硬件成本; 配置思路: 交换机上创建vlan交换机上的各个接口划分到对应的vlan中 T…

canvas绘制不同样式的五角星(图文示例)

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

web蓝桥杯真题--9、水果拼盘

介绍 目前 CSS3 中新增的 Flex 弹性布局已经成为前端页面布局的首选方案,本题可以使用 Flex 属性快速完成布局。 准备 开始答题前,需要先打开本题的项目代码文件夹,目录结构如下: ├── css │ └── style.css ├── im…

vue生命周期,父子组件生命周期

生命周期 什么是生命周期? 从Vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期! beforeCreate: 初始化之前,data和methods的数据还没有初始化 ⻚面重定向 created:初始化…

【笔记】Helm-3 主题-6 Chart仓库指南

Chart仓库指南 本节介绍如何创建和使用chart仓库。在高层级中,chart仓库是打包的chart存储和分享的位置。 社区的Helm chart仓位于 Artifact Hub ,欢迎加入。不过Helm也可以创建并运行您自己的chart仓库。该指南将介绍如何操作。 Artifact Hub 先决条…

QtCreator12无法识别Qt5.15.2的安卓SDK与NDK配置解决

解决方法: 设置JDK为JDK11 使用Android Studio下载 Android SDK Command-line Tools 10.0 打开Android SDK Location : 双击打开cmdline-tools 复制10.0中所有东西到latest中 点击Manage Kits并选择Devices 然后点击Android会弹出下图窗口,并自动更 安装完成 成功识别

vue3 知识

vue3介绍 Vue3的变化: 1、vue3完全兼容vue2,但是vue3不建议用vue2的写法 2、拥抱TypeScript,ts完全兼容js 3、组合式API和配置项API vue2 是配置项api vue3 组合式api vue3项目创建和启动 # 创建vue3项目&a…