技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

Linux如何搜索文件的方法

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-07-28 06:11┆點(diǎn)擊:

  在Linux上查找某個(gè)文件是一件比較麻煩的事情。畢竟在Linux中需要我們使用專用的“查找”命令來尋找在硬盤上的文件。

  Linux下的文件表達(dá)格式非常復(fù)雜,不象WINDOWS,DOS下都是統(tǒng)一的AAAAAAA.BBB格式,那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后綴就非常容易查找到。Linux中查找文件的命令通常為“find”命令,“find”命令能幫助我們?cè)谑褂?管理Linux的日常事務(wù)中方便的查找出我們需要的文件。對(duì)于Linux新手來說,“find”命令也是了解和學(xué)習(xí)Linux文件特點(diǎn)的方法。因?yàn)長inux發(fā)行版本繁多,版本升級(jí)很快,在Linux書籍上往往寫明某個(gè)配置文件的所在位置,往往Linux新手按圖索驥還是不能找到。比如說REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬盤位置和文件目錄就有了很大的改變,如果不學(xué)會(huì)使用“find”命令,那么在成千上萬的Linux文件中要找到其中的一個(gè)配置文件是相當(dāng)困難的,筆者在沒有精通“find”命令之前就吃過這樣的苦頭。好,下面就詳細(xì)為大家介紹強(qiáng)大的“find”命令的全部使用方法和用途。

  通過文件名查找法:

  這個(gè)方法說起來就和在WINDOWS下查找文件一樣容易理解了。如果你把這個(gè)文件放在單個(gè)的文件夾里面,只要使用常見的“ls"命令就能方便的查找出來,那么使用“find”命令來查找它就不能給你留下深刻的印象,畢竟“find”命令的強(qiáng)大功能不止這個(gè)。如果知道了某個(gè)文件的文件名,而不知道這個(gè)文件放到哪個(gè)文件夾,甚至是層層套嵌的文件夾里。舉例說明,假設(shè)你忘記了httpd.conf這個(gè)文件在系統(tǒng)的哪個(gè)目錄下,甚至在系統(tǒng)的某個(gè)地方也不知道,則這是可以使用如下命令:

  #find / -name httpd.conf

  這個(gè)命令語法看起來很容易就明白了,就是直接在find后面寫上 -name,表明要求系統(tǒng)按照文件名查找,最后寫上httpd.conf這個(gè)目標(biāo)文件名即可。稍等一會(huì)系統(tǒng)會(huì)在計(jì)算機(jī)屏幕上顯示出查找結(jié)果列表:

  etc/httpd/conf/httpd.conf

  這就是httpd.conf這個(gè)文件在Linux系統(tǒng)中的完整路徑。查找成功。

  如果輸入以上查找命令后系統(tǒng)并沒有顯示出結(jié)果,那么不要以為系統(tǒng)沒有執(zhí)行find/ -name httpd.conf命令,而可能是你的系統(tǒng)中沒有安裝Apache服務(wù)器,這時(shí)只要你安裝了Apache Web服務(wù)器,然后再使用find / -name httpd.conf就能找到這個(gè)配置文件了。

  無錯(cuò)誤查找技巧:

  在Linux系統(tǒng)中“find”命令是大多數(shù)系統(tǒng)用戶都可以使用的命令,并不是ROOT系統(tǒng)管理員的專利。但是普通用戶使用“find”命令時(shí)也有可能遇到這樣的問題,那就是Linux系統(tǒng)中系統(tǒng)管理員ROOT可以把某些文件目錄設(shè)置成禁止訪問模式。這樣普通用戶就沒有權(quán)限用“find”命令來查詢這些目錄或者文件。當(dāng)普通用戶使用“find”命令來查詢這些文件目錄是,往往會(huì)出現(xiàn)"Permissiondenied."(禁止訪問)字樣。系統(tǒng)將無法查詢到你想要的文件。為了避免這樣的錯(cuò)誤,我們可是使用轉(zhuǎn)移錯(cuò)誤提示的方法嘗試著查找文件,輸入

  find / -name access_log 2>/dev/null

  這個(gè)方法是把查找錯(cuò)誤提示轉(zhuǎn)移到特定的目錄中去。系統(tǒng)執(zhí)行這個(gè)命令后,遇到錯(cuò)誤的信息就直接輸送到stderrstream 2 中,access_log 2就是表明系統(tǒng)將把錯(cuò)誤信息輸送到stderrstream 2中,/dev/null是一個(gè)特殊的文件,表明空的或者錯(cuò)誤的信息,這樣查詢到的錯(cuò)誤信息將被轉(zhuǎn)移了,不會(huì)再顯示了。

  在Linux系統(tǒng)查找文件也會(huì)遇到這樣一個(gè)實(shí)際問題。如果我們?cè)谡麄€(gè)硬盤,這個(gè)系統(tǒng)中查找某個(gè)文件就要花費(fèi)相當(dāng)長的一段時(shí)間,特別是大型Linux系統(tǒng)和容量較大的硬盤,文件放在套嵌很深的目錄中的時(shí)候。如果我們知道了這個(gè)文件存放在某個(gè)大的目錄中,那么只要在這個(gè)目錄中往下找就能節(jié)省很多時(shí)間了。使用find /etc -name httpd.conf就可以解決這個(gè)問題。上面的命令就是表示在etc目錄中查詢httpd.conf這個(gè)文件。這里再說明一下“/ ”這個(gè)函數(shù)符號(hào)的含義,如果輸入 “find/ ”就是表示要求Linux系統(tǒng)在整個(gè)ROOT目錄下查找文件,也就是在整個(gè)硬盤上查找文件,而“find/etc”就是只在 etc目錄下查找文件。因?yàn)?ldquo;find/etc”表示只在etc目錄下查找文件,所以查找的速度就相應(yīng)要快很多了。

  根據(jù)部分文件名查找方法:

  這個(gè)方法和在WINDOWS中查找已知的文件名方法是一樣的。不過在Linux中根據(jù)部分文件名查找文件的方法要比在WINDOWS中的同類查找方法要強(qiáng)大得多。例如我們知道某個(gè)文件包含有srm這3個(gè)字母,那么要找到系統(tǒng)中所有包含有這3個(gè)字母的文件是可以實(shí)現(xiàn)的,輸入:

  find /etc -name '*srm*'