前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 Linux 终端高效搜索文件——高级指南

如何在 Linux 终端高效搜索文件——高级指南

作者头像
用户1418987
发布2024-09-06 10:45:54
810
发布2024-09-06 10:45:54
举报
文章被收录于专栏:coder

如何在 Linux 终端高效搜索文件——高级指南

如何在 Linux 终端高效搜索文件——高级指南_搜索文件
如何在 Linux 终端高效搜索文件——高级指南_搜索文件

如果你是第一次学习 find 命令,我在之前的教程中介绍了文件搜索的基础知识,并探讨了一些使用 Linux 快速搜索文件的强大命令。如果你没有读过,而且还不熟悉 find,我强烈建议你先看一下,然后再回来这里。

如何搜索某个用户拥有的文件

find 命令接受一个名为 user 的特殊参数,你可以用它来过滤一个用户拥有的文件。

语法是这样的:

代码语言:javascript
复制
find [path] -user [username] [options]

假设你想搜索我拥有的所有文件(我在这台笔记本上的用户名是 aruna)。你可以通过使用下面的命令来做到这一点:

代码语言:javascript
复制
find ./5minslearn/ -user aruna

搜索一个用户拥有的文件

上面的命令将列出 5minslearn 目录下用户 aruna 拥有的所有文件。

你可能注意到在语法的末尾加入了 [options]。这意味着你可以在后面添加任何参数,使你的搜索更有效一些。

例如,让我们试着只过滤我拥有的目录。要过滤这些目录,你必须添加 -type 选项。下面是它的命令:

代码语言:javascript
复制
find ./5minslearn/ -type d -user aruna

一个用户创建的文件目录

从上面的截图中,你可以看到这个命令列出了 5minslearn 目录下由我拥有的所有目录和子目录。

如何搜索有特定权限的文件

使用 -perm 参数,你可以搜索有特定权限的文件。

语法是这样的:

代码语言:javascript
复制
find [path] -perm [permissions] [options]

例如,我们假设你想搜索当前目录中所有具有只读权限的文件。只读文件的代码是 400

**注意:**如果你不知道这个代码(400)是如何产生的,而你又很想知道,请参考我的《Linux 文件权限》文章中的“如何使用八进制模式删除权限”。

代码语言:javascript
复制
find . -perm 400

查找具有只读权限的文件

我很久以前创建了这个 welcome.txt 文件,它具有只读权限。你可以从上面的截图中看到,find 命令已经完全识别了它。

我想分享一下我在工作中遇到的一个奇怪的经历。

我当时正在做一个项目,其中包含大量的压缩文件(大约 200 多个)。在这些文件中,我必须找到所有没有只读权限的文件。我很确定,这个数量很小,我可以用一只手来数。

在 200 多个文件中寻找最多 5 个文件是一个耗时的过程。因此,我决定找一个替代方法。

我在谷歌上搜索了一下,结果让我很吃惊。

我了解到,只要在 -perm 命令前加上一个 -not 标志,就可以做到这一点。下面是这个命令,供你参考:

代码语言:javascript
复制
find . -not -perm 400

该命令将列出当前目录中所有不具有只读权限的文件。

找到所有不具有只读权限的文件

另外一个好处是,你可以在 find 命令中的任何选项前加上这个 -not 标志,以查找与搜索查询相反的内容。

这里是另一个例子:

代码语言:javascript
复制
find . -not -type f

运行上述命令将列出当前目录中所有非文件的项目(目录、符号链接等)。

如何搜索属于某个特定组的文件

正如我们在上一篇关于文件权限的教程中所看到的,可能会有多个人因工作而共享一台机器。他们被分组为开发者、QA 和其他人。

那么,如果你想找到开发人员组的人 Developers 可以查看的所有文件呢?这很困难,对吗?

不要担心,这里有一个使用 find 命令的简单替代方法。

使用 find 命令中的 -group 参数,你可以搜索属于某个组的所有文件。

语法是这样的:

代码语言:javascript
复制
find [path] -group [groupname] [options]

我的机器上有一个带有我名字的组。让我们试着找到我的组所拥有的所有文件。

代码语言:javascript
复制
find . -group aruna

find 命令列出属于一个组的所有文件

你也可以把 -group 选项和其他 find 命令选项结合起来,以完善你的搜索。

例如,你可以将 -group 选项与 -perm 选项结合起来,搜索属于某个组并有特定权限的文件。

代码语言:javascript
复制
find . -group aruna -perm 400

查找属于一个组且具有只读权限的所有文件

上述命令将列出属于 aruna 组的所有只读文件。

同样,正如我前面提到的,你也可以把 -group 选项和 -not 选项结合起来,找到不属于某个特定组的文件。

让我们试着找到不属于 sudo 组的文件。

代码语言:javascript
复制
find . -not -group sudo

查找不属于 sudo 组的文件

如何搜索最近修改过的文件

find 命令中的 -newer 选项可以搜索在给定文件的最后一次修改之后修改的文件。

语法是这样的:

代码语言:javascript
复制
find [path] -newer [reference_file]

例如,如果你想搜索所有在 notes.txt 文件之后修改的文件,你可以使用以下命令:

代码语言:javascript
复制
find . -newer notes.txt

该命令将搜索当前目录中所有在 notes.txt 文件之后最近被修改的文件。

查找最近被修改的文件

如何搜索几分钟前被访问过的文件

要搜索几分钟前访问过的文件,你可以使用 -amin 参数。这个参数将接受分钟数(n),并找到所有在 n 分钟前被访问的文件。

语法如下:

代码语言:javascript
复制
find [path] -amin [n] [options]

例如,让我们尝试找到在过去 30 分钟内被访问的文件:

代码语言:javascript
复制
find . -amin -30

查找在过去 30 分钟内被访问的文件

我希望你注意到数字前面的负(minus)符号。它表明该文件在过去被访问过。

如何搜索所有空文件

你可以使用 find 命令中的 -empty 标志来搜索空的文件和目录。

语法是这样的:

代码语言:javascript
复制
find [path] -empty [options]

要搜索所有空文件和目录,你可以使用以下命令:

代码语言:javascript
复制
find . -empty

查找所有空文件和目录

要想只搜索空目录,你可以把 -empty 选项和 -type 选项结合起来:

代码语言:javascript
复制
find . -type d -empty

查找所有空目录

这个命令将列出当前目录中所有的空目录。

可以在 -empty 标志后面加上 -delete 标志来删除所有的空文件和文件夹。

如何搜索符合特定正则表达式的文件

-regex 参数允许你使用正则表达式(RegEx)来应用一个过滤器。

语法是这样的:

代码语言:javascript
复制
find [path] -regex [expression] [options]

例如,我们假设你想搜索名字以字母 w 开头的文件,你可以使用下面的命令来实现这一目的:

代码语言:javascript
复制
find . -regex "./w.*"

查找所有匹配特定正则表达式的文件

总结

在这篇文章中,你已经学到了一些高级技巧,可以有效地搜索文件并对其进行各种操作。

我建议你通过尝试来学习 find 命令。自己想出一些方案,并尝试使用你所学到的技巧来查找文件。

在此为你抛出几个场景:

  • 查找并删除以 .txt 结尾的文件
  • 查找不属于你的文件
  • 查找与某一模式不匹配的文件
  • 查找所有以 log- 开头、大小在 50MB 和 100MB 之间的文件
  • 查找属于某个组且 10 分钟前被访问的所有文件

参考:如何在 Linux 终端高效搜索文件——高级指南

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何在 Linux 终端高效搜索文件——高级指南
  • 如何搜索某个用户拥有的文件
  • 如何搜索属于某个特定组的文件
  • 如何搜索最近修改过的文件
  • 如何搜索几分钟前被访问过的文件
  • 如何搜索所有空文件
  • 如何搜索符合特定正则表达式的文件
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档