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
作用说明:在指定目录下递归地搜索文件和目录,并根据指定的条件进行匹配,然后执行相应的操作。
参数使用:
- -name :根据指定的文件名进行匹配。
- -type :根据指定的文件类型进行匹配,如f表示普通文件,d表示目录。
- -size :根据指定的文件大小进行匹配。
- -user :根据指定的用户名进行匹配。
- -group :根据指定的组名进行匹配。
- -mtime :根据指定的修改时间进行匹配,表示文件的修改时间在指定的天数之前。
- -atime :根据指定的访问时间进行匹配,表示文件的访问时间在指定的天数之前。
- -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 的文件,那么你就可以这样做: