linux下查找文件命令總結find、locate、whereis、which、type

咱們常常須要在系統中查找一個文件,那麼在linux系統中咱們如何準確高效的肯定一個文件在系統中的具體位置呢?一下我總結了在linux系統中用於查找文件的幾個命令。linux

一、find命令

find是最經常使用也是最強大的查找命令,它能夠查找任何類型的文件。shell

find命令的通常格式爲:find <指定目錄><指定條件><指定動做>,即find pathname -options [-print -exec -ok]數據庫

參數解釋:ssh

pathname:pathname爲搜索的目錄及其子目錄,默認狀況下爲當前目錄ui

經常使用的option選項:spa

-name:按文件名來查找文件命令行

-user:按照文件的屬主來查找文件io

-group:按照文件所屬的組來查找文件變量

-perm:按照文件權限來查找文件date

-prune:不在當前指定目錄中查找

例如:已知在/目錄,/etc,/user以及/user/bin目錄下都有一個名爲1111的文件,咱們看一下-prune的做用

find -name 1111 -print爲在當前目錄及其子目錄下下查找名爲1111的文件。

find . -path ./etc -prune -o -name 1111 -print爲在當前目錄及其子目錄(除了/etc目錄及其子目錄)下查找名爲1111的文件。

find . -path ./usr -prune -o -name 1111 -print爲在當前目錄及其子目錄(除了/usr目錄及其子目錄)下查找名爲1111的文件。

find. −path./usr/bin−o−path./etc -prune -o -name 1111 -print爲在當前目錄及其子目錄(除了/usr/bin目錄及其子目錄;/etc目錄及其子目錄)下查找名爲1111的文件。因爲命令行不能直接識別圓括號,所以要用轉義字符\,在和先後都要有空格。

注意:find命令不加任何參數時,表示搜索路徑爲當前目錄及其子目錄,默認的動做爲-print,即不過濾任何結果,也就是說輸出全部的文件。

-mtime -n +n:按照文件修改時間來查找文件,-n表示文件修改時間距如今n天之內,+n表示文件修改時間據如今n天之前

-type:查找某一類型的文件(b:塊設備文件;d:目錄文件;c:字符設備文件;p:管道文件;l:連接文件;f:普通文件)

-nogroup:查找無有效所屬組的文件,即文件所屬的組在/etc/group中不存在

-nouser;查找無有效所屬主的文件,即文件的所屬主在/etc/passwd中不存在

二、locate命令

locate命令實際是"find -name"的另外一種寫法,可是查找方式跟find不一樣,它比find快得多。由於它不搜索具體目錄,而是在一個數據庫(/var/lib/locatedb)中搜索指定的文件。次數據庫含有本地文件的全部信息,此數據庫是linux系統自動建立的,數據庫由updatedb程序來更新,updatedb是由cron daemon週期性創建的,默認狀況下爲天天更新一次,因此用locate命令你搜索不到最新更新的文件,除非你在用locate命令查找文件以前手動的用updatedb命令更新數據庫。

注意:每次有新文件更新和刪除以後,在updatedb以前數據庫中保存的文件信息不會改變,即新添加一個文件以後,updatedb以前用locate搜索不到指定的文件。一樣再刪除一個文件信息已經在數據庫中的文件時,updatedb以前用locate照樣能搜索到該文件的信息,,儘管此時該文件已經不存在了。

三、whereis命令

whereis命令只能用於搜索二進制文件(-b)、源代碼文件(-s)、說明文件(-m)。若是省略參數則返回全部的信息。

四、which命令

which命令是在PATH變量指定的路徑中搜索指定的系統命令的位置。用echo $PATH可顯示當前PATH變量的值。

五、type命令

type命令主要用於區分一個命令究竟是shell自帶的仍是外部獨立的二進制文件提供的。若是是shell自帶的則會提示此命令爲shell buildin,不然會列出命令的位置。例如:cd爲shell自帶的命令,當用which查找時,which會按照PATH變量設置的路徑進行搜索,結果顯示no cd in...;用type cd則顯示cd爲shell buildin命令。ssh不是shell自帶命令,用type時會顯示ssh的路徑。

相關文章
相關標籤/搜索