关于搜索
在Linux文件系统中搜索概念有两种一种是搜索文件名另一种是在一个文件中搜索指定的内容这两种搜索我们都简要的介绍一下但不一定极为专业想到哪写到哪
通过搜索文件名来查找文件
有的弟兄经常会说文件都放在哪里了我怎么查找文件?其实这里说的意思就是通过文件名来查找文件所处的位置搜索文件名我们常用的工具有findlocatewhere等现在我们简单的说一说这几个工具在文件系统中通过查找文件名的方法来查看其所在的位置
find
find 路径 name 文件名
举例比如在/etc中搜索vsftpdconf文件
[root@localhost ~]# find /etc name vsftpdconf
find 更为详细的说明请参考 《Linux文件查找命令findxargs详述》
find 是最强劲的搜索工具用法也比较灵活而不是仅仅找一个文件名这个功能
locate
locate 是用来通过文件名搜索文件的工具它的用法也比较简单locate 的应用首先要通过updatedb建立索引数据库然后才能应用如果您新安装了软件或者存放了新的文件也要先运行updatedb命令以生成最新索引库
用法
locate 文件名
我们要先运行updatedb
[root@localhost ~]# updatedb
举例 我们要找vsftpdconf文件都位于哪个位置
[root@localhost ~]# locate vsftpdconf
/etc/vsftpd/vsftpdconf
/home/beinan/vsftpdconf
/root/vsftpdconfswp
/root/vsftpdconf
/root/vsftpdconfig
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/vsftpdconf
/usr/share/doc/vsftpd/EXAMPLE/INTERNET_SITE_NOINETD/vsftpdconf
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpdconf
/usr/share/logwatch/defaultconf/logfiles/vsftpdconf
/usr/share/logwatch/defaultconf/services/vsftpdconf
/usr/share/man/man/vsftpdconfgz
whereis 和which
where
whereis 是来寻找命令的二进制文件同时也会找到其帮助文件
比如我们不知道fdisk工具放在哪里我们就可以用whereis fdisk 来查找
[root@localhost ~]# whereis fdisk
fdisk: /sbin/fdisk /usr/share/man/man/fdiskgz
如果我们寻找grub在哪里应该用如下命令说明grub位于/sbin目录他的帮助文件是grubgz 也就是man grub
[root@localhost ~]# whereis grub
grub: /sbin/grub /etc/grubconf /usr/share/grub /usr/share/man/man/grubgz
which
which 和where 相似只是我们所设置的环境变量中设置好的路径中寻找比如
[root@localhost ~]# which fdisk
/sbin/fdisk
在一个文件或输出中查找
有时我们为了管理服务器可能要查看一些日志文件或管理指令的输出并抽取出来这时我们要用到more和grepegrep|(管道)如果要输出到一个文件中 还要用到 >
比如我们查看/var/log/message 文件并查找月号的日志我们应该用如下的命令组合
[root@localhost ~]# cat /var/log/messages |grep May |more
注意因为May和之间有两个空格所以得用号括起来
如果我们想把查看到的结果输出到一个文件中应该用 > 输出到文件
[root@localhost ~]# cat /var/log/messages |grep May > ~/messagetxt
[root@localhost ~]# more ~/messagetxt
上面的例子是我们首先用 cat 来查看/var/log/message 的内容然后抽取带有 May 字样的行然后输出到用户家目录下的 messagetxt文件中然后再用more来查看messagetxt文件内容
从一个输出结果中查找
我们也可以从一个输出的结果中查找所需要的内容请看下面的例子
[root@localhost ~]# ls lh
总计 M
rwxrxrx root root : addumlsh
rwxrxrx root root addumlsh
rwrwrw root root : dood
drwxrxrt root root K : googledir
rwxrxrx root root : lsfilesh
rwrr root root K : messagetxt
drwxrxrx root root K : mkuml
rwxrxrx root root K : mkumlananastarbz
drwxrxrx root K : mydir
rwrr root root M : myfileimg
rwrr root root M : myfileSpaa
rwrr root root M : myfileSpab
rwrr root root M : newmyfileimg
drwxrwrw root root K : sundir
drwxrxrx root root K : testdir
rwxrxrx root root : upgradelog
rw root root K : vsftpdconf
rwrr root root K : vsftpdconfig
rwrr root root : xaa
在ls lh 的输出结果中查看带有字样的行我们看到带有字样的行都出来了在这里表示文件创建或最后修改(访问)的时间符合这一特征的都在里面
[root@localhost ~]# ls lh |grep |more
rwrr root root M : myfileimg
rwrr root root M : myfileSpaa
rwrr root root M : myfileSpab
rwrr root root M : newmyfileimg
rwrr root root : xaa
查找正在运行的程序
这也是从一个输出中查找的例子先用ps 来列出所有正在运行中的进程然后通过grep 来提取下面的例子中查找是否有gaim程序在运行
[root@localhost ~]# ps aux |grep gaim
Warning: bad syntax perhaps a bogus ? See /usr/share/doc/procps/FAQ
beinan ? S : : gaim
root pts/ S+ : : grep gaim
从上面的例子我们可以看到的确有gaim运行进程号是 如果想杀掉gaim怎么办?应该有kill 或killall gaim
[root@localhost ~]# kill
或
[root@localhost ~]# killall gaim
对于进程的查找也可以用pgrep 来进行比如我们查找gaim
[root@localhost ~]# pgrep gaim
等价于
[root@localhost ~]# ps aux |grep gaim
Warning: bad syntax perhaps a bogus ? See /usr/share/doc/procps/FAQ
beinan ? S : : gaim
root pts/ R+ : : grep gaim
关于本文
关于查找的命令和工具说起来比较复杂本文也仅仅是一个入门性的文档如果只是通过文件名来查找到他位置我感觉还是用locate好一点有时find太费时间
这篇文章本来仅仅是写文件和目录的搜索的后来我想到可能有的弟兄要学一点指定关健字在一个文件或输出中查找所以又写了一点在一个文件或输出中查找所需要的内容看上去本文有点拼凑的感觉是不是太随意了?
参考文档
man 和help
相关文档
《Linux 文件内容查看工具介绍》
《关于Linux 文件系统中路径的理解》
《Linux 文件和目录管理之列出删除复制移动及改名》
《Linux 文件类型 及文件的扩展名》
《简述Linux 文件系统的目录结构》
《Linux 用户(user)和用户组(group)管理概述》
《Linux 文件和目录的属性》
才能做到人在旅途,感悟人生,享受人生。