Linux文件搜索知識(shí)總匯
1 、關(guān)于搜索;
在Linux文件系統(tǒng)中,搜索概念有兩種,一種是搜索文件名,另一種是在一個(gè)文件中搜索指定的內(nèi)容;這兩種搜索,我們都簡(jiǎn)要的介紹一下,但不一定極為專業(yè)。想到哪寫(xiě)到哪;
2、通過(guò)搜索文件名來(lái)查找文件;
有的弟兄經(jīng)常會(huì)說(shuō)文件都放在哪里了,我怎么查找文件?其實(shí)這里說(shuō)的意思就是通過(guò)文件名來(lái)查找文件所處的位置;搜索文件名,我們常用的工具有find、locate、where等。現(xiàn)在我們簡(jiǎn)單的說(shuō)一說(shuō)這幾個(gè)工具在文件系統(tǒng)中,通過(guò)查找文件名的方法來(lái)查看其所在的位置;
2.1 find ;
find 路徑 -name 文件名
舉例:比如在/etc中搜索vsftpd.conf文件;
# find /etc -name vsftpd.conf
find 更為詳細(xì)的說(shuō)明請(qǐng)參考: 《Linux文件查找命令find,xargs詳述》
find 是最強(qiáng)勁的搜索工具,用法也比較靈活,而不是僅僅找一個(gè)文件名這個(gè)功能。
2.2 locate
locate 是用來(lái)通過(guò)文件名搜索文件的工具,它的用法也比較簡(jiǎn)單。locate 的應(yīng)用,首先要通過(guò)updatedb建立索引數(shù)據(jù)庫(kù),然后才能應(yīng)用;如果您新安裝了軟件或者存放了新的文件,也要先運(yùn)行updatedb命令,以生成最新索引庫(kù)。
用法:
locate 文件名
我們要先運(yùn)行updatedb;
舉例: 我們要找vsftpd.conf文件都位于哪個(gè)位置;
- # locate vsftpd.conf
- /etc/vsftpd/vsftpd.conf
- /home/beinan/vsftpd.conf
- /root/.vsftpd.conf.swp
- /root/vsftpd.conf
- /root/vsftpd.config
- /usr/share/doc/vsftpd-2.0.4/EXAMPLE/INTERNET_SITE/vsftpd.conf
- /usr/share/doc/vsftpd-2.0.4/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
- /usr/share/doc/vsftpd-2.0.4/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
- /usr/share/logwatch/default.conf/logfiles/vsftpd.conf
- /usr/share/logwatch/default.conf/services/vsftpd.conf
- /usr/share/man/man5/vsftpd.conf.5.gz
2.3 whereis 和which
2.3.1 where
whereis 是來(lái)尋找命令的二進(jìn)制文件,同時(shí)也會(huì)找到其幫助文件;
比如我們不知道fdisk工具放在哪里,我們就可以用whereis fdisk 來(lái)查找;
fdisk: /sbin/fdisk /usr/share/man/man8/fdisk.8.gz
如果我們尋找grub在哪里,應(yīng)該用如下命令,說(shuō)明grub位于/sbin目錄,他的幫助文件是grub.8.gz ,也就是man grub;
grub: /sbin/grub /etc/grub.conf /usr/share/grub /usr/share/man/man8/grub.8.gz
2.3.2 which
which 和where 相似,只是我們所設(shè)置的環(huán)境變量中設(shè)置好的路徑中尋找;比如;
/sbin/fdisk
3、在一個(gè)文件或輸出中查找;
有時(shí)我們?yōu)榱斯芾矸?wù)器,可能要查看一些日志文件或管理指令的輸出,并抽取出來(lái);這時(shí)我們要用到more和grep、egrep、|(管道),如果要輸出到一個(gè)文件中, 還要用到 > 。
比如我們查看/var/log/message 文件,并查找5月8號(hào)的日志;我們應(yīng)該用如下的命令組合;
注意:因?yàn)镸ay和8之間有兩個(gè)空格,所以得用''號(hào)括起來(lái)。
如果我們想把查看到的結(jié)果輸出到一個(gè)文件中,應(yīng)該用 > 輸出到文件;
# cat /var/log/messages |grep 'May 8' > ~/message0508.txt
# more ~/message0508.txt
上面的例子,是我們首先用 cat 來(lái)查看/var/log/message 的內(nèi)容,然后抽取帶有 May 8字樣的行,然后輸出到用戶家目錄下的 message0508.txt文件中,然后再用more來(lái)查看message0508.txt文件內(nèi)容;
#p#
從一個(gè)輸出結(jié)果中查找
我們也可以從一個(gè)輸出的結(jié)果中查找所需要的內(nèi)容,請(qǐng)看下面的例子;
- -rwxr-xr-x 1 root root 545 04-25 11:21 adduml02.sh
- -rwxr-xr-x 1 root root 545 2004-01-18 adduml.sh
- -rw-rw-rw- 1 root root 0 04-25 14:26 dood
- drwxr-xr-t 2 root root 4.0K 04-24 21:59 googledir
- -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh
- -rw-r--r-- 1 root root 31K 05-08 13:47 message0508.txt
- drwxr-xr-x 2 root root 4.0K 04-21 12:46 mkuml-2004.07.17
- -rwxr-xr-x 1 root root 67K 04-22 14:13 mkuml-2004.07.17-ananas.tar.bz2
- drwxr-xr-x 2 root 502 4.0K 04-25 09:08 mydir
- -rw-r--r-- 1 root root 7.9M 04-27 20:35 myfile.img
- -rw-r--r-- 1 root root 4.0M 04-27 20:37 myfileSpaa
- -rw-r--r-- 1 root root 3.9M 04-27 20:37 myfileSpab
- -rw-r--r-- 1 root root 7.9M 04-27 20:38 newmyfile.img
- drwxrw-rw- 2 root root 4.0K 04-25 14:22 sundir
- drwxr-xr-x 2 root root 4.0K 04-25 09:20 testdir
- -rwxr-xr-x 1 root root 613 03-26 18:41 upgrade.log
- -rw------- 1 root root 4.0K 04-29 20:12 vsftpd.conf
- -rw-r--r-- 1 root root 4.0K 04-29 20:23 vsftpd.config
- -rw-r--r-- 1 root root 100 04-27 16:14 xaa
在ls -lh 的輸出結(jié)果中,查看帶有04-27字樣的行,我們看到帶有04-27字樣的行都出來(lái)了。04-27在這里表示文件創(chuàng)建或最后修改(訪問(wèn))的時(shí)間。符合這一特征的都在里面?!?/P>
- -rw-r--r-- 1 root root 7.9M 04-27 20:35 myfile.img
- -rw-r--r-- 1 root root 4.0M 04-27 20:37 myfileSpaa
- -rw-r--r-- 1 root root 3.9M 04-27 20:37 myfileSpab
- -rw-r--r-- 1 root root 7.9M 04-27 20:38 newmyfile.img
- -rw-r--r-- 1 root root 100 04-27 16:14 xaa
查找正在運(yùn)行的程序:
這也是從一個(gè)輸出中查找的例子,先用ps 來(lái)列出所有正在運(yùn)行中的進(jìn)程,然后通過(guò)grep 來(lái)提取。下面的例子中查找是否有g(shù)aim程序在運(yùn)行;
從上面的例子,我們可以看到的確有g(shù)aim運(yùn)行,進(jìn)程號(hào)是2682 。如果想殺掉gaim怎么辦?應(yīng)該有kill 2682 或killall gaim
對(duì)于進(jìn)程的查找,也可以用pgrep 來(lái)進(jìn)行;比如我們查找gaim;
2682
等價(jià)于;
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.6/FAQ
beinan 2682 4.4 2.3 105000 17504 ? S 14:05 0:02 gaim
root 5716 0.0 0.0 5156 712 pts/1 R+ 14:06 0:00 grep gaim
4、關(guān)于本文;
關(guān)于查找的命令和工具說(shuō)起來(lái)比較復(fù)雜,本文也僅僅是一個(gè)入門性的文檔。如果只是通過(guò)文件名來(lái)查找到他位置,我感覺(jué)還是用locate好一點(diǎn)。有時(shí)find太費(fèi)時(shí)間 ;
這篇文章本來(lái)僅僅是寫(xiě)文件和目錄的搜索的,后來(lái)我想到:可能有的弟兄要學(xué)一點(diǎn)指定關(guān)健字在一個(gè)文件或輸出中查找。所以又寫(xiě)了一點(diǎn)在一個(gè)文件或輸出中查找所需要的內(nèi)容??瓷先ケ疚挠悬c(diǎn)拼湊的感覺(jué),是不是太隨意了?
5、參考文檔;
man 和help
6、相關(guān)文檔;
《Linux 文件內(nèi)容查看工具介紹》
《關(guān)于Linux 文件系統(tǒng)中路徑的理解》
《Linux 文件和目錄管理之列出、刪除、復(fù)制、移動(dòng)及改名》
《Linux 文件類型 及文件的擴(kuò)展名》
《簡(jiǎn)述Linux 文件系統(tǒng)的目錄結(jié)構(gòu)》
《Linux 用戶(user)和用戶組(group)管理概述》
《Linux 文件和目錄的屬性》
搜索文件天天用,希望你看了上文能掌握一些知識(shí),對(duì)你有所幫助。
【編輯推薦】
- Linux比拼Windows誰(shuí)更給力
- Linux就這樣被黑客入侵
- Linux Kernel 2.6.37發(fā)布 Ext4性能提升
- 榨干百度谷歌:搜索引擎廣告大贏家
- 人脈搜索,未來(lái)搜索引擎的方向
- 3.2.4 迭代加深的深度優(yōu)先搜索