岁月博客

  • 首页
  • 跨境电商
  • 技术文档
  • 软路由虚拟化
  • 服务器技术
  • VPS
  • 羊毛
    • 羊毛
    • 自助薅京豆系统
岁月博客
致力于关注网络安全与黑客文化,专注网络技术的分享与交流。
  1. 首页
  2. 技术文档
  3. 正文

linux的find命令详解(Find 命令在 Linux 上的工作原理)

2022年4月6日 187点热度 0人点赞 0条评论

Linux 和类 Unix 系统(即 macOS)上的 find 命令用于在特定目录中查找文件和目录。当您尝试查找和处理多个文件时,它是您可以使用的最有用的命令之一。它在文件审核期间也非常有用。

find 的语法如下所示,其中[OPTIONS]是可选设置,[LOCATION]是您要在其中查找内容的位置,是您要查找[SEARCH TERM]的文件名或目录名。

find [OPTIONS] [LOCATION] [SEARCH TERM]

如何在 Linux 和 macOS 上使用 Find 命令

find 命令的最基本形式如下所示:

find ./test *.txt

上述命令将查找任何以 结尾的文件.txt,即*.txt在./test文件夹中。这将返回所有匹配文件的列表。

处理符号链接

某些文件夹可能包含链接到文件系统另一部分的符号链接。因此,如果符号链接确实存在,您可能会在不知不觉中搜索更大的文件夹集。因此,有许多选项可以控制 find 遇到符号链接时发生的情况:

  • -P- 使用时,从不遵循符号链接。
  • -L- 使用时,始终遵循符号链接。
  • -H- 使用时,符号链接仅在命令行某处提及时才会被跟踪,即,如果您搜索链接,并且有一个名为链接的符号链接,find 将返回一个链接以及跟随该符号链接时找到的任何内容。

这些选项中的任何一个都可以使用,如下所示:

find -P ./test *.txt

按类型搜索文件

由于有许多不同类型的文件和目录,仅搜索特定字符串并不总是有用的。如果我们想提及我们正在寻找的文件或目录的类型,我们可以使用-type选项指定它。为了消除歧义,我们还在搜索字符串之前添加了 -name 选项。您也可以完全删除搜索字符串,然后搜索特定的文件类型。

下面,我们搜索类型为 f 的所有内容,它定义了一个常规文件。

find ./test -type f -name "*.txt"

所有类型的完整列表可以在下面找到:

  • b- 块设备
  • c- 字符设备
  • d- 目录
  • p- 命名管道(FIFO)
  • f- 常规文件
  • l- 符号链接 - 如果我们使用符号链接 -L 选项,则永远不会使用。
  • s- 插座

按尺寸搜索

我们可以使用 -size 选项按大小搜索。例如,我们要查找大小为 10MB 的所有文件,我们使用 10M:

find ./test -size 10M

这不是特别有用,所以如果我们想查找低于或高于某个大小的文件,我们分别添加 - 和 +。例如,下面将找到所有小于 10MB 的文件。

find ./test -size -10M

由于大小不是正常单位,即 MB、GB、kb,因此可以在下面找到完整的单位列表:

  • b- 512 字节块(默认)。
  • c- 只是字节。
  • w- 两字节字。
  • k- 千字节。
  • M- 兆字节。
  • G- 千兆字节。

按所有者或组查找

使用-groupor-user选项,我们还可以根据拥有者或所属组来查找目录或文件。例如,下面的代码查找所有者所在的 ./test 目录中的所有文件someOwner:

find ./test -user someOwner

同样,我们可以找到这样的组:

find ./test -group someGroup

按权限查找

使用-perm,我们可以找到具有特定权限组合的所有文件。下面将在 ./test 目录中找到权限为 0755 的所有文件。如果您想了解有关权限的更多信息,请阅读我们的文章chmod。

find ./test -perm 0755

限制查找命令深度

由于 find 命令是递归的,它有时会返回相当多的结果。如果要限制级别数,请使用该-maxdepth选项。同样,您可以-mindepth在开始返回结果之前定义要到达的最小深度。

find . -name "*.txt" -maxdepth 2

这里是两个-mindepthand的示例-maxdepth,它只返回 ./test 中文件夹内的文件。

find . -name "*.txt" -maxdepth 2 -mindepth 2

按上次访问/修改时间查找文件

有许多不同的方法可以根据文件的最后访问或修改时间来查找文件。例如,以下命令将仅查找文件*.txt夹./test中最近 5 分钟内最后一次访问的文件:

find . -name "*.txt" -amin 5

在这里,-amin指的是文件应该在多少分钟前被访问。以下是检查访问/修改时间的所有选项:

  • -amin n- 该文件最后一次访问是在 n 分钟前。
  • -atime n- 该文件的最后一次访问是在 n 天前。
  • -cmin n- 文件状态在 n 分钟前更改。
  • -ctime n- 文件状态在 n 天前更改。
  • -mmin n- 该文件最后一次修改是在 n 分钟前。
  • -mtime n- 该文件最后一次修改是在 n 天前。
  • -anewer file- 搜索文件的修改时间比[FILE] 更新。如果使用-Lor -H, and[FILE]是符号链接,则使用它指向的文件。
  • -cnewer文件 - 搜索文件状态比[FILE]. 如果使用-Lor -H, and[FILE]是符号链接,则使用它指向的文件。如果您添加-daystart到其中任何一个的末尾,则测量将从当天开始进行,而不是当前时间,即以下将查找过去 5 天内修改的任何内容,从当前开始日。此选项在 macOS 上不可用。
find . -name "*.txt" -mmin 5 -daystart

最后,还可以进行修改+。-例如,-amin -5将找到最近 5 分钟内修改过的任何内容,但-amin +5会找到超过 5 分钟之前修改过的任何内容。

在 Linux 和 macOS 中对 Find Command 执行命令

一旦你用 find 命令找到了一些文件或目录,你可能想为它们做点什么。幸运的是,我们可以使用 -exec 选项对找到的每个文件或目录运行命令。-exec 之后的任何代码都将在找到的每个文件上运行。

例如,下面的命令会将所有找到的文件更改为拥有一个名为someOwner.

find . -name "*.txt" -exec chown someOwner {} \;

\;末尾的只是表示该行的结束。指的{}是找到的当前文件 - find 将替换找到的每个文件的文件名,因此该命令更加安全。

注意:如果要在目录上执行此操作,请使用-execdir而不是-exec.

在 Linux 和 macOS 上使用 Find 删除文件

不用说,这应该谨慎使用。find 是递归的,您可能会在不知不觉中删除很多您不打算删除的文件。但是,如果要删除使用 find 命令找到的文件,可以在查找代码末尾使用 -delete 标志。如果你把它放在第一位,它将删除你指定的文件夹中的所有内容。所以要小心。

下面将删除所有格式为 *.txt 的文件(即带有 .txt 前缀的文件):

find . -name "*.txt" -delete

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请及时联系我们qq邮箱:1107996578@qq.com,一经查实,本站将立刻删除。

标签: 暂无
最后更新:2022年4月6日

岁月

以梦为马,随处可栖

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

岁月

以梦为马,随处可栖

最新 热点 随机
最新 热点 随机
抖音是什么平台,抖音平台基本属性介绍 抖加投放技巧以及注意事项,抖音dou+详细的投放攻略 抖音id怎么修改,抖音用户名修改教程 ipad抖音怎么设置横竖屏,平板横竖屏的设置教程 抖音浏览量突然猛涨怎么回事,抖音播放突然增多的原因 fiddler创建根证书不成功解决方案--岁月博客提供
linux系统网卡配置命令(Linux如何配置网卡) N5105散热改造,Esxi+iKuai+OpenWrt+NAS+Debian,N5105 all in one 教程攻略 不只是水桶:你知道你所有的公共资源吗? linux的find命令详解(Find 命令在 Linux 上的工作原理) 磊科路由器配置VPN,实现网络对接(两地网络通过磊科路由互联) internetdownloadmanager是什么(免费且功能强大的下载工具推荐)
分类
  • VPS
  • 技术文档
  • 新闻
  • 服务器技术
  • 未分类
  • 羊毛
  • 跨境电商
  • 软路由虚拟化
最近评论
kkkki 发布于 9 个月前(07月05日) 100好像可以开韩国了把,我今天误打误撞开成功了
kiritoghy 发布于 10 个月前(05月26日) 想问一下如果azure for students开B1S+64G SSD就是免费的吗,不会扣100刀...

COPYRIGHT © 2022 岁月博客 ALL RIGHTS RESERVED.

豫ICP备2022005050号