Linux文件查找新姿势:总有一种你没见过

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ 

只会用scp?那也太Low了

很多人安装了Ubuntu第一步就做错了

基于Docker容器部署MySQL数据库

Linux系统内核编译过程详解

正则表达式真的很强,可惜你不会写



虽然Linux是一款操作简单、管理便捷的操作系统,但几乎没有人会完全记住系统的所有文件的位置或文件内容。因此,当用户需要确认一个文件的所在位置时,可以通过搜索命令对文件进行搜索。
1、which

which命令的工作原理非常简单,它通过检查系统的环境变量(例如PATH)来查找特定命令的可执行文件路径。它会按照环境变量中定义的顺序遍历这些目录,返回找到的第一个匹配项。

优点:

1、简单快速,适用于查找命令的位置。

2、适用于验证特定命令是否安装在系统上。

缺点:

1、无法搜索文件内容。

2、仅用于查找命令,不适用于文本搜索。

使用方式
# 查找命令位置 which command_name
应用场景
1、当想要查找特定命令的可执行文件路径时。
2、当需要验证系统上是否安装了某个命令。
2、find

find命令是一款功能强大的文件和目录搜索工具。它基于指定的路径,递归地搜索文件和目录,并使用各种条件来匹配文件,如名称、类型、修改时间等。

优点:

1、功能强大,支持多种搜索条件,包括文件内容搜索。

2、可以用于查找文件和目录,以及执行各种操作。

缺点:

命令格式相对复杂,需要更多的参数和选项。

使用方式

# 在指定路径中搜索文件或目录 find path_to_search [options] [expression]


应用场景

1、find非常适合以下情况:

2、在整个文件系统中搜索文件和目录。

3、查找符合特定条件的文件,如按名称、类型或修改时间等。

4、进行高级文件内容搜索。

3、locate

locate命令通过使用系统维护的文件名数据库来查找文件和目录。这个数据库包含了系统中所有文件和目录的索引。
优点:
查询速度非常快,适用于文件名查找。
对于大型文件系统,性能更加出色。
缺点:
无法搜索文件内容。
数据库可能不会实时更新,因此可能会漏掉最新创建的文件。
使用方式
# 查找文件名 locate file_name
注意事项
locate的数据库默认每天更新一次,因此对于新增文件的搜索结果可能并不理想。您可以使用updatedb命令手动更新数据库。
#手动更新locatedb数据库[root@localhost ~]# updatedb#不指定目录进行搜索[root@localhost ~]# locate pwd/etc/.pwd.lock/usr/bin/pwd/usr/bin/pwdx/usr/include/pwd.h/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/watchdog/hpwdt.ko.xz/usr/lib/x86_64-redhat-linux6E/include/pwd.h/usr/lib64/cracklib_dict.pwd/usr/lib64/python2.7/lib-dynload/spwdmodule.so/usr/lib64/python2.7/site-packages/ldap/controls/pwdpolicy.py/usr/lib64/python2.7/site-packages/ldap/controls/pwdpolicy.pyc/usr/lib64/python2.7/site-packages/ldap/controls/pwdpolicy.pyo/usr/sbin/unix_chkpwd/usr/share/cracklib/cracklib-small.pwd/usr/share/cracklib/pw_dict.pwd/usr/share/doc/krb5-workstation-1.15.1/user/pwd_mgmt.html/usr/share/man/man0p/pwd.h.0p.gz/usr/share/man/man1/pwd.1.gz/usr/share/man/man1/pwdx.1.gz/usr/share/man/man1p/pwd.1p.gz/usr/share/man/man3/lckpwdf.3.gz/usr/share/man/man3/ulckpwdf.3.gz/usr/share/man/man8/unix_chkpwd.8.gz/usr/share/man/overrides/de/man1/pwdx.1/usr/share/man/overrides/fr/man1/pwdx.1/usr/share/man/overrides/uk/man1/pwdx.1/usr/share/man/zh_CN/man1/pwd.1.gz/usr/share/man/zh_CN/man3/pwd.3tcl.gz/usr/src/kernels/3.10.0-957.el7.x86_64/include/config/hpwdt/usr/src/kernels/3.10.0-957.el7.x86_64/include/config/hpwdt/nmi/usr/src/kernels/3.10.0-957.el7.x86_64/include/config/hpwdt/nmi/decoding.h#指定目录进行搜索[root@localhost ~]# locate /etc/sh/etc/shadow/etc/shadow-/etc/shells
4、grep
grep命令用于在文本文件中搜索匹配特定模式或关键词的行。它通过逐行扫描文本文件并比较模式来查找匹配项。
优点:
1、强大的文本搜索工具,支持正则表达式。
2、可以用于查找文本内容。
缺点:
1、仅适用于文本文件,不适用于二进制文件。
2、不支持文件和目录的搜索,仅限于文本内容搜索。
使用方式
# 在文件中搜索关键词 grep [options] pattern file_name
应用场景
1、在文本文件中搜索特定的关键词或模式。
2、需要进行高级文本内容搜索,例如,查找所有包含某个关键词的文件。
在选择文件查找工具时,需要根据具体的任务和需求来决定。如果只需查找可执行文件的路径,which是一个简单而快速的选择。如果需要进行复杂的文件和目录搜索,包括文本内容搜索,find是一个强大的工具。对于快速的文件名查找,locate是一个高性能的选项。而如果主要关心文本内容搜索,那么grep是无可替代的工具。

来不及解释了,快上车!(进群看公告)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

               点个在看,无需赞赏!

请使用浏览器的分享功能分享到微信等