6.5 指令与文件的搜寻

简介: 6.5 指令与文件的搜寻

6.5.1 指令文件名的搜寻

在终端机模式当中,连续输入两次[tab]按键就能够知道使用者有多少指令可以下达。

which (寻找“可执行文件”)

这个指令是根据“PATH”这个环境变量所规范的路径,去搜寻“可执行文件”的文件名。所以,重点是找出“可执行文件”而已!且 which 后面接的是“完整文件名”。若加上 -a 选项,则可以列出所有的可以找到的同名可执行文件,而非仅显示第一个而已。


6.5.2 文件文件名的搜寻

whereis (由一些特定的目录中寻找文件文件名)

whereis可以加入选项来找寻相关的数据,例如,如果你要找可可执行文件(binary),那么加上-b就可以。如果不加任何选项的话,那么就将所有的数据列出来。


whereis主要是针对/bin/sbin下面的可执行文件,以及 /usr/share/man 下面的 man page 文件,跟几个比较特定的目录来处理而已。


locate / updatedb

locate的使用很简单,直接在后面输入“文件的部分名称”后,就能够得到结果。如上面,输入locate passwd,那么在完整文件名(包括路径名称)当中,只要有passwd在其中,就会被显示出来。这也是很方便好用的指令,如果忘记某个文件完整文件名时。


现使用 locate 来寻找数据的时候特别的快, 这是因为 locate 寻找的数据是由“已创建的数据库 /var/lib/mlocate/” 里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据。


直接输入“updatedb”可以手动更新数据库。updatedb指令会去读取/etc/updatedb.conf这个配置文件的设置,然后再去硬盘里面进行文件名的动作,最后就更新整个数据库文件。因为updatedb会去搜寻硬盘,所以当你执行updatedb时,可能会等待数分钟的时间。


updatedb:根据 /etc/updatedb.conf 的设置去搜寻系统硬盘内的文件名,并更新/var/lib/mlocate 内的数据库文件;


locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字文件名。


find

图中最右边为目前的时间,越往左边则代表越早之前的时间轴啦。由图 6.5.1 我们可以清楚的知道:


+4代表大于等于5天前的文件名:ex> find /var -mtime +4


-4代表小于等于4天内的文件文件名:ex> find /var -mtime -4


4则是代表4-5那一天的文件文件名:ex> find /var -mtime 4

-nouser 或 -nogroup 的选项功能中,除了你自行由网络上面下载文件时会发生之外, 如果你将系统里面某个帐号删除了,但是该帐号已经在系统内创建很多文件时,就可能会发生无主孤魂的文件存在! 此时你就得使用这个 -nouser 来找出该类型的文件。

SUID 与 SGID 都可以设置在二进制程序上,假设我想要找出来 /usr/bin, /usr/sbin 这两个目录下, 只要具有 SUID 或 SGID 就列出来该文件,你可以这样做:

因为 SUID 是 4 分,SGID 2 分,总共为 6 分,因此可用 /6000 来处理这个权限! 至于 find后面可以接多个目录来进行搜寻!另外, find 本来就会搜寻次目录,这个特色也要特别注意。

find 的特殊功能就是能够进行额外的动作(action)。我们将范例八的例子以图解来说明如下:

该范例中特殊的地方有 {} 以及 \; 还有 -exec 这个关键字,这些东西的意义为:


{} 代表的是“由 find 找到的内容”,如上图所示,find 的结果会被放置到 {} 位置中;


-exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 指令内的额外动作。 在本例中就是“ ls -l {} ”。


因为“ ; ”在 bash 环境下是有特殊意义的,因此利用反斜线来跳脱。


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

不但可以指定搜寻的目录(连同次目录),并且可以利用额外的选项与参数来找到最正确的文件名。使用find比较废硬盘,所以尽量不要用find,尽量用whereis和locate。



相关文章
|
6月前
|
运维
简记:清理指定后缀名文件的 powerhsell 小脚本
简记:清理指定后缀名文件的 powerhsell 小脚本
60 0
|
Linux
Linux查找多个文件、排除某类文件、匹配文件多处内容
Linux查找多个文件、排除某类文件、匹配文件多处内容
110 0
|
6月前
|
监控 Linux 开发工具
Linux常用指令【文件目录操作】2
Linux常用指令【文件目录操作】
|
30天前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
42 4
|
6月前
|
Linux Shell
Linux常用指令【文件目录操作】1
Linux常用指令【文件目录操作】
which-find命令,which cd 指令可以查看指令的存放位置,find命令相当于文件的搜索框,find / -name “test“,从目录 / 开始进行搜索, 按照文件名搜索,搜索test
which-find命令,which cd 指令可以查看指令的存放位置,find命令相当于文件的搜索框,find / -name “test“,从目录 / 开始进行搜索, 按照文件名搜索,搜索test
|
4月前
|
Linux Perl
linux 批量查找并替换文件里的指定字符串,linux 批量查找并替换当前目录下所有子目录内文件里的指定字符串
linux 批量查找并替换文件里的指定字符串,linux 批量查找并替换当前目录下所有子目录内文件里的指定字符串
42 0
|
Java Linux Shell
Linux常用查找命令
grep find locate
93 2
|
6月前
|
Linux PHP 开发工具
Linux查找含有某字符串文件并批量替换
Linux查找含有某字符串文件并批量替换
|
Linux Perl
【linux】解决文件名中带空格,命令执行出错的问题
【linux】解决文件名中带空格,命令执行出错的问题
703 0