linux的5個查找命令 find、locate、whereis、which、type

概要

linux中主要有5個文件查找命令:find、locate、whereis、which、type.
find最爲強大,但耗時較長.
locate可看做find的精簡版,但是它的速度非常快.
whereis、which、type的使用範圍則較小,有特殊的用途.

find

find是最常見和最強大的查找命令,可以用它找到任何的文件.
find的使用格式:
find <指定目錄> <指定條件> <指定動作>
其中:
<指定目錄> :所要搜索的目錄及其所有的子目錄.默認爲當前目錄.
<指定條件>:所要搜索的文件的特徵,比如-name,-size.
<指定動作>:對搜索結果進行特定的處理.
如果什麼參數也不加,find默認搜索當前目錄及其子目錄,並且不過濾任何結果(也就是返回所有文件),
將它們全都顯示在屏幕上.
find的使用實例:
(1)find / -name tcp_frto
在整個磁盤上尋找名爲tcp_frto的文件,並將其路徑顯示在屏幕中.
(2)find / -name 'tcp*.ko'
在整個磁盤上尋找以tcp開頭的模塊,並將其路徑顯示在屏幕中.
(3)find /root -size 1500c
在/root目錄下,查找大小爲1500bytes的文件,並顯示.
(4)find / -size +1000000000c
"+"表示要求系統只列出大於指定大小的文件,而使用"-"表示要求系統列出小於指定大小的文件.
所以,這條語句表示:在整個磁盤中,查找大小超過1G的文件,並顯示出來.
<查找條件>還可以是:
  find / -amin -10 # 查找在系統中最後10分鐘訪問的文件
  find / -atime -2 # 查找在系統中最後48小時訪問的文件
  find / -empty # 查找在系統中爲空的文件或者文件夾
  find / -group cat # 查找在系統中屬於 groupcat的文件
  find / -mmin -5 # 查找在系統中最後5分鐘裏修改過的文件
  find / -mtime -1 #查找在系統中最後24小時裏修改過的文件
  find / -nouser #查找在系統中屬於作廢用戶的文件
  find / -user fred #查找在系統中屬於FRED這個用戶的文件
(5)find / -name grub.conf
有兩條結果:
/boot/grub/grub.conf
/etc/grub.conf
更近一步,如果我們知道該文件在那一層,則可以指定層數maxdepth:
find / -maxdepth 2 -name grub.conf
結果只有一條:/etc/grub.conf
(6)混合查找:-and -or !|
find / -user root -and -name grub.conf
(7)<指定動作>
find / -name grub.conf -ls
指定動作爲ls,可以看到,其實/etc/grub.conf是/boot/grub/grub.conf的一個鏈接.
關於find命令,有一篇比較詳細的文章:http://blog.csdn.net/ydfok/article/details/1486451

locate

locate雖然功能有限,但是比find快很多,因爲它不搜索具體的目錄,而是搜索一個數據庫
/var/lib/mlocate/mlocate.db,這個數據庫中含有本地所有文件信息.Linux系統自動創建這個數據庫,
並且每天自動更新一次,所以使用locate命令查找不到最新變動過的文件,爲了避免這種情況,在
使用locate之前,先使用updatedb命令,手動更新數據庫.
使用實例:
(1)updatedb && locate mlocate.db
(2)locate ~/m
搜索/root目錄下,所有以m開頭的文件
(3)locate *.db
搜索所有以.db結尾的文件.
(4)locate -i ~/m
在/root目錄下,搜索以m開頭的文件,忽略大小寫.

whereis

whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、
man說明文件(參數-m)和源代碼文件(參數-s).如果省略參數,則返回所有信息.
用例:
(1)whereis fdisk
(2)whereis -b fdisk
which
which命令的作用是,在PATH變量指定的路徑中,搜索整個系統命令的位置,並且返回第一個搜
索結果.也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪
一個位置的命令.
用例:
(1)which df

type

type命令其實不能算查找命令,它是用來區分某個命令到底是由shell自帶的,還是由shell外部
的獨立二進制文件提供的.如果一個命令是外部命令,那麼使用-p參數,會顯示該命令的路徑,
相當於which.
用例:
(1)type cd
cd is a shell builtin. cd是shell的自帶命令.
(2)type grep
grep is /bin/grep,grep是一個外部命令,並顯示該命令的路徑.
(3)type -p grep
/bin/grep,相當於which命令.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章