首页 > 系统相关 >如何在 Linux 终端中有效地搜索文件【2】- 高级篇

如何在 Linux 终端中有效地搜索文件【2】- 高级篇

时间:2023-03-08 22:34:30浏览次数:60  
标签:文件 所有 命令 查找 搜索 终端 Linux find

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_当前目录

在本文中,让我们探索 find 命令的高级使用技巧。

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

如何搜索指定用户的文件

​find​​ 命令接受一个名为 ​​user​​ 的特殊参数,您可以使用它来过滤属于指定用户的文件。

语法如下所示:

find [path] -user [username] [options]

假设您想搜索我拥有的所有文件(我在这台笔记本电脑上的用户名是 aruna)。您可以使用以下命令执行此操作:

find ./5minslearn/ -user aruna

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_02

搜索属于某用户的文件

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

您可能会注意到添加到语法末尾的​​ [options]​​。这意味着您可以在此之后添加任何参数,以使您的搜索更加有效。

例如,让我们尝试仅过滤我拥有的目录。要过滤目录,您必须添加​​ -type​​ 选项。这是它的命令:

find ./5minslearn/ -type d -user aruna

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_03

查找用户创建的目录

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

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

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

语法如下:

find [path] -perm [permissions] [options]

例如,假设您要搜索当前目录中所有具有只读权限的文件。只读文件的代码是 ​​400​​。

find . -perm 400

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_04

查找具有只读权限的文件

很久以前,我以只读权限创建了这个 ​​welcome.txt​​ 文件。从上面的截图可以看出,find命令已经完美的识别出来了。

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

我正在做一个项目,其中包含大量的小文件(大约200多个)。在这些文件中,我必须找到所有不是只读权限的文件。我很确定这种文件数目很少,我一只手就能数过来。

在 200 多个文件中查找最多 5 个文件是一个耗时的过程。所以,我决定另辟蹊径。

我在谷歌上搜索方案,对结果我感到惊讶。

我查询到我可以通过在 ​​-perm ​​命令前加上一个​​ -not​​ 标志来做到这一点。这是命令:

find . -not -perm 400

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

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_正则表达式_05

查找所有不是只读权限的文件

除此之外,您可以在 ​​find​​ 命令中的任何选项之前添加此 ​​-not​​ 标志以查找与搜索查询相反的内容。

这是给你的另一个例子:

find . -not -type f

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

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

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

语法是:

find [path] -group [groupname] [options]

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

find . -group aruna

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_06

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

您还可以将 ​​-group​​ 选项与其他查找命令选项结合使用以优化搜索。

例如,您可以结合使用 ​​-group​​ 选项和 ​​-perm​​ 选项来搜索属于某个组并具有特定权限的文件。

find . -group aruna -perm 400

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_07

查找属于某个组并有只读权限的的所有文件

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

同样,正如我前面提到的,您还可以将 ​​-group​​ 选项与 ​​-not​​ 选项结合使用,以查找不属于特定组的文件。

让我们尝试查找不属于 ​​sudo​​ 组的文件。

find . -not -group sudo

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_当前目录_08

查找不属于 sudo 组的文件

如何查找最近修改的文件

​find​​ 命令中的 ​​-newer​​ 选项搜索在给定文件的最后修改时间之后修改的文件。

语法如下所示:

find [path] -newer [reference_file]

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

find . -newer notes.txt

此命令将搜索当前目录中在 ​​notes.txt​​ 文件最后修改时间之后修改的所有文件。

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_正则表达式_09

查找最近修改的文件

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

要搜索几分钟前访问过的文件,您可以使用 ​​-amin​​ 参数。此参数将接受分钟数 (​​n​​) 并查找 ​​n​​ 分钟前访问的所有文件。

语法是:

find [path] -amin [n] [options]

例如,让我们尝试查找最近 30 分钟内访问过的文件:

find . -amin -30

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_10

查找最近 30 分钟内访问过的所有文件

我希望您注意到数字前的负号(减号)。它表示该文件过去曾被访问过。

如何搜索所有空文件

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

语法如下:

find [path] -empty [options]

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

find . -empty

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_11

查找所有空文件和目录

要仅搜索空目录,您可以将 ​​-empty​​ 选项与 ​​-type​​ 选项结合使用:

find . -type d -empty

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_当前目录_12

查找所有空目录

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

​-empty​​ 标志可以附加 ​​-delete​​ 标志以删除所有空文件和文件夹。

如何查找与特定正则表达式匹配的文件

​-regex​​ 参数允许您使用正则表达式 (RegEx) 应用过滤器。

语法如下所示:

find [path] -regex [expression] [options]

例如,假设您要搜索名称以字母 w 开头的文件。您可以使用以下命令来执行此操作:

find . -regex "./w.*"

如何在 Linux 终端中有效地搜索文件【2】- 高级篇_搜索_13

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

总结

在本文中,您学习了一些有效搜索文件并对文件执行各种操作的高级技巧。

我建议您通过练习来学习 find 命令。自己想出一些场景,并尝试使用您学到的技术来查找文件。

引用链接

​[1]​​ 之前的教程: ​https://www.muouseo.com/article/kq1ezp5yrl.html​
​[2]​​ 通读一下: ​https://www.muouseo.com/article/kq1ezp5yrl.html​

标签:文件,所有,命令,查找,搜索,终端,Linux,find
From: https://blog.51cto.com/sdwml/6108897

相关文章

  • Rocky Linux 9 安装 Node.js
    一、概要1.环境(1)RockyLinux9.1(2)Node.js16.0二、安装1.准备(1)更新仓库sudodnfupdate-y(2)安装NPM依赖的构建工具sudoyumgroupinstall'Deve......
  • Linux安装Docker
    Linux安装Docker1.CentOS安装DockerDocker分为CE和EE两大版本。CE即社区版(免费,支持周期7个月)EE即企业版,强调安全,付费使用,支持周期24个月。DockerCE分为s......
  • 如何在 Linux 中启用 Shell 脚本的调试模式
    脚本是存储在一个文件的一系列命令。在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令。......
  • 常见 Linux 提权
    CommonLinuxPrivesc记录常见Linux提权的提权方式:水平提权,垂直提权。水平提权:这是您通过接管与您处于相同权限级别的不同用户来扩大您对受感染系统的影响的地方。......
  • 搜索与图论3.2
    一、简述本节主要介绍一下有关最小生成树的两个算法,即\(Prim\)算法和\(Kruskal\)算法,适用于无向图。二、Prim算法基本思想\(Prim\)算法有一个适用于稠密图的朴素......
  • linux修改系统时间为北京时间
    方法一:1.删除本地时间rm-rf/etc/localtime2.设置时区为上海ln-s/usr/share/zoneinfo/Asia/Shanghai/etc/localtime3.利用date查看时间修改成功方法二:在centos7中设置......
  • linux系列8.0系统升级openssl导致的连锁问题
    linux发行版8.0在升级openssl后,可能导致不能ssh以及su切换异常以及网络不通问题,控制台登录输入用户名后出现Login incorrect    在升级openssl后,异常状态如下:......
  • vscode-使用ctrl+shift+p搜索C/C++: Edit configurations显示no matching command问题
    问题在vscode中,使用ctrl+shift+p组合键调出命令窗口,输入c/c++:EditConfigurations后提示nomatchingcommand。解决方法在Extensions中,安装c/c++拓展后,重启vscode,即......
  • linux ssh报错Unable to negotiate with **** port 22: no matching host key type fo
    目录linuxssh报错Unabletonegotiatewith****port22:nomatchinghostkeytypefoundssh连接机器报错linuxssh报错Unabletonegotiatewith****port22:nom......
  • Linux配置固定IP
    1、使用root权限到 /etc/sysconfig/network-scripts下2、编辑对应的网口 vim ifcfg-ens33     #网络类型:以太网,默认就好,不用修改TYPE="Ethernet......