寻找文件与內容
在Linux系统当中,文件的数量非常非常的多,假使各位今天要找一个叫做「RELEASE-NOTES.zh_cn.html」的网页,如果沒有使用特殊的寻找工具,那岂不是要翻遍系统才能找到它。幸好,在系统已经内置许多寻找文件的工具给我们使用!下面我们要来简单介绍这些工具的使用方法。
在这裡会使用到的指令,笔者把它们整理列表如下:
「find」与「locate」都是可以直接用来寻找文件的工具,不过比较特別的是,find的寻找方式,是直接从File System来寻找,因此寻找的速度会比较慢,而且也比较耗费系统资源。locate的寻找方式,是通过一个已经索引(index)完成的数据库来找出文件所在位置,所以locate寻找的速度比较快速,也不会耗费太多的系统资源,不过通常在使用locate之前,都要先使用「updatedb」指令,来创建文件索引数据库。
除了搜寻系统的文件之外,在此也要介绍各位有关於「指令名称」或「指令相关数据」的搜寻工具,例如whereis、which、type等等。下面笔者直接以一些常用的使用样例来为各位介绍这些Unix工具的使用方法。
「-amin」、「-cmin」、「-mmin」这些参数的使用方式与上述的「-atime」、「-ctime」、「-mtime」的使用,基本上用法是大同小異。各位如有兴趣的话,不妨切換到 /tmp目錄底下,实际的利用find加上这些参数来实验一下,以上这些参数在现实生活中很常用到的。假使各位亲身体验过这些参数的使用后,一定会更加深印象的!
locate的使用方式要比find来得简单,而且在寻找文件的速度上,也较find要来得快速,不过locate有个小小缺点就是,各位的系统要「定期」的「updatedb」,这樣才能让文件索引的內容能一直保持在最新的状态,假使大家在updatedb之后,才创建新的文件,那麼这个新的文件有可能会寻找不到。这是因为updatedb数据库尚未更新的原因。
以下是针对此状況所示范的简单例子:
大家使用过find、locate的用法之后,接下来要介绍大家有关於「指令名称」或「指令相关数据」的寻找工具,例如whereis、which、type等等。下面直接以一些常用的使用样例来为各位介绍这些Unix工具的使用方法。
寻找文件的內容
在上一章节裡所介绍的都是寻找文件的「名称」,现在要来介绍的是寻找文件的「內容」 (也就是「捕获文件符串內容」的意思)。比如今天大家要寻找系统中所有的*.txt文件,要来找出哪几个txt文件的上下文当中有「tom.info」这几个符串,那麼就需要使用「grep」这个工具来寻找。下面让我们就要来简单认识一下grep工具的用方法。
这个例子,简单来说是将/boot/grub/menvu.1st文件,把所有「以#为开头」以及「空白行」全除掉之后的结果显示出来,这个例子使用了一些「正规表示式」,我们将会在下一节来介绍。
万用字符与正规表示式
如果大家学习和掌握好万用字符与正规表示法,以后在使用或管理Linux系统时,一定会更方便好用。如果大家还是看不懂也沒关系,等您使用Linux系统久了以后,再来看看这个章节一定也会有所帮助的。
万用字符
在系统的shell底下,拥有一些通配符(wild card),这些通配符对於档案的寻找相当好用哦!当然啦!通配符除了在文件寻找可以使用以外,平常各位在处理一些事情的时候,若使用通配符也会变得相当方便!下面简单举例万用字符的使用方法。
下面是万用字符的一些基础使用范例:
正规表示式
「正规表示式」在Unix-like系统当中,是非常很重要的。详细的用法与內容非常多,在这里,我们只简单介绍基础的使用方法。下面是基础常用的正规表示法与相关说明:
初学者对于「正规表示式」与「万用字符」这两者常会搞混,因此正确的釐清观念是非常重要的。关於「正规表示式」的样例介绍,请大家可以参考《乌哥的私房菜》一书。
注:【鸟哥的私房菜 - 正规表示法】