20
2025
03
02:09:38

Linux文件搜索

Linux文件搜索

推荐使用顺序:

whereis  locate  find

可执行文件查找

查找PATH目录下的可执行文件,常常是命令

which [-a] command


# 示例

which ls # ls命令的位置,但只打印第一个被找到符合要求的指令



which -a ls # 打印出PATH目录下所有匹配的命令位置

文件查找

  1. whereis:特定目录中,查找文件。一般用于查找二进制文件、源代码文件和manual手册等系统级别的文件。速度快。

# 语法whereis [-option] fileName# 参数介绍-l:查找的主要目录-b:只查找二进制文件-m:只查找在说明文档manual路径下的文件-s:只查找source来源文件-u: 查找不在上述三个类别的其他特殊文件

示例:


whereis -l

# 输出太长,部分结果

bin: /usr/bin

bin: /usr/sbin

bin: /usr/lib/x86_64-linux-gnu

...

man: /usr/share/man/man6

man: /usr/share/man/man1

man: /usr/share/man/man7

...

src: /usr/src/linux-headers-6.5.0-45-generic

src: /usr/src/linux-headers-6.8.0-40-generic

src: /usr/src/linux-hwe-6.5-headers-6.5.0-45



whereis passwd # 全部文件



whereis -m passwd # 在manual手册中的文件
  1. locate:一般文件查找的首选方式

    • 速度快,创建文件数据库,而不是直接读取硬盘

    • 无法查找到最新文件。数据库每天自动更新,更新前的新文件无法被查找到。可sudo updatedb手动更新数据库,可能花费几分钟

    • 查找功能不如find强大,不过日常查找够用了

有可能没有安装,可通过sudo apt install mlocate进行安装。

# 语法locate [-option] keyword # 只需要关键词就可以了,不需要全称locate [-option] keyword | less # 有可能输出很多,可用less、more进行分页# 参数介绍-i:--ignore-case,常见参数,忽略大小写-c:不输出文件名,而是输出找到的文件数量-l:控制输出的行数,例如-l 5 输出5行-S:输出locate所使用的数据库文件的相关信息-r:后接正则表达式

示例:


locate passwd

# 为了看出差别,改为输出结果数量

locate -c passwd # 214



locate -ic passwd # 214



locate -rc passwd* # 895



locate -l 5 passwd

# /etc/passwd

# /etc/passwd-

# /etc/pam.d/chpasswd

# /etc/pam.d/passwd

# /etc/security/opasswd
  1. find:非常强大的查找方法,可以支持多种方式进行查找,如时间、权限、名称等


    # 查找方式过多,以下仅展示使用过的方式。若之后用到新的方式,会对其进行补充

    # 基础查找

    find PATH -name fileName



    PATH:查找某路径下的文件,如/,查找根目录下的文件

    fileName:文件名称,支持正则表达式。使用正则表达式的时候,需要加引号,如"*passwd*"



    # 额外操作

    find PATH -name fileName -exec command {} \; # 查找后,接着执行其他命令。\;对分号进行转义



    -exec:执行命令,直到\;

    {}:表示find查找的结果,类似于变量。或者类似于python中的print("{}".format(value))
    • 速度慢,费硬盘。每次都在硬盘中进行查找,而不是在数据库中进行查找。

    • 查找方式多

参考文献

  • 《鸟哥的Linux私房菜:基础学习篇 第四版》




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/9509.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: