Bootstrap

file,which,whereis,locate,find-(读书笔记-七)

flie 观察文件类型

命令名称:file

命令作用说明:file命令用于确定文件的类型。

参数使用:

  • 参数1:文件路径,指定要检查类型的文件。
  • 参数2:选项,用于对文件类型检查进行进一步定义。

示例1:检查文件类型

命令:file test.txt

说明:该命令将会确定test.txt文件的类型,比如文本文件、二进制文件等。

示例2:检查多个文件类型

命令:file file1 file2 file3

说明:该命令将会确定file1、file2和file3三个文件的类型,并逐个打印输出。

which 寻找可执行文件

命令名称:which

作用说明:which命令用于定位可执行文件的位置。它可以在环境变量$PATH定义的路径中搜索指定的命令,并且返回找到的第一个匹配的命令的完整路径。

参数使用:

  • -a:显示所有匹配的命令路径,而不仅仅是第一个匹配的命令路径。
  • -s:禁止显示错误消息。

示例1:

which ls

该命令将返回ls命令的完整路径,例如:/usr/bin/ls。

示例2:

which -a python

该命令将返回所有匹配的python命令的完整路径,例如:/usr/bin/python和/usr/local/bin/python。

这个指令是根据“PATH”这个环境变量所规范的路径,去搜寻“可执行文件”的文件名~所以,重点是找出“可执行文件”而已!且 which 后面接的是“完整文件名”喔!若加上 -a 选项,则可以列出所有的可以找到的同名可执行文件,而非仅显示第一个而已!最后一个范例最有趣,怎么 history 这个常用的指令竟然找不到啊!为什么呢?这是因为 history是“bash 内置的指令”啦!但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的啊

whereis 文件文件名的搜索

命令名称:whereis

作用说明:用于定位指定命令的二进制文件、源文件和帮助文档的位置。

参数使用:

  • -b:只搜索可执行文件的位置;
  • -m:只搜索帮助文档的位置;
  • -s:只搜索源文件的位置。

例子1:whereis ls

该命令会返回ls命令的所在位置,包括二进制文件、源文件和帮助文档。

例子2:whereis python -b

该命令会返回python命令的可执行文件所在位置。

find 是很强大的搜寻指令,但时间花用的很大!(因为find 是直接搜寻硬盘,为如果你的硬盘比较老旧的话,嘿嘿!有的等!)这个时候 whereis 就相当的好用了!另外, whereis 可以加入选项来找寻相关的数据,例如,如果你是要找可可执行文件(binary)那么加上 -b 就可以啦!如果不加任何选项的话,那么就将所有的数据列出来啰!

么 whereis 到底是使用什么咚咚呢?为何搜寻的速度会比 find 快这么多?其实那也没有什么,只是因为 whereis 只找几个特定的目录而已~并没有全系统去查询之故。所以说,whereis 主要是针对 /bin/sbin 下面的可执行文件,以及 /usr/share/man 下面的 man page 文件,跟几个比较特定的目录来处理而已。所以速度当然快的多!不过,就有某些文件是你找不到的啦!想要知道 whereis 到底查了多少目录?可以使用 whereis -l 来确认一下即可!

locate文件文件名的搜索

在Linux系统中,locate命令用于快速定位文件或目录。它通过搜索系统的数据库来匹配指定的文件名。locate命令的参数用于指定搜索的范围和条件。

常用参数:

  • -i:忽略大小写匹配
  • -r:使用正则表达式进行匹配
  • -l:仅显示匹配到的文件名,不显示路径
  • -c:仅显示匹配到的文件数量
  • -b:精确匹配文件名,不匹配子串

示例1:在整个系统中搜索文件名为"example.txt"的文件,并显示文件的完整路径

locate example.txt

示例2:在系统中搜索以"test"开头的文件名,并显示匹配到的文件数目

locate -c '^test'

find 文件文件名的搜索

命令名称:find

作用说明:在指定目录下递归地搜索文件和目录,并根据指定的条件进行匹配,然后执行相应的操作。

参数使用:

  1. -name :根据指定的文件名进行匹配。
  2. -type :根据指定的文件类型进行匹配,如f表示普通文件,d表示目录。
  3. -size :根据指定的文件大小进行匹配。
  4. -user :根据指定的用户名进行匹配。
  5. -group :根据指定的组名进行匹配。
  6. -mtime :根据指定的修改时间进行匹配,表示文件的修改时间在指定的天数之前。
  7. -atime :根据指定的访问时间进行匹配,表示文件的访问时间在指定的天数之前。
  8. -exec :对匹配的文件执行指定的命令。

例子1:搜索当前目录下所有以".txt"为后缀的文件,并输出它们的绝对路径。

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

例子2:搜索/etc目录下所有属于root用户,并且大小超过1MB的文件,并将它们删除。

find /etc -user root -size +1M -exec rm {} \;

 

如果你要找的文件是具有特殊属性的,例如 SUID 、文件拥有者、文件大小等等,那么利用 locate是没有办法达成你的搜寻的!此时 find 就显的很重要啦!另外,find 还可以利用万用字符来找寻文件名呢!举例来说,你想要找出 /etc 下面文件名包含 httpd 的文件,那么你就可以这样做:

;