Linux中關於find指令的用法以及whereis指令

初識Linux,感覺“哇塞好神奇。。。。。。”真的一點兒不誇張。
當你扔掉鼠標,拿一把稱心如意的鍵盤來控制計算機的時候,那個feel,倍兒爽,想想都覺得帥到爆。當然,前提是你得能夠熟練的運用Linux指令。
額,言歸正傳,我就想說說find指令的使用來着。

以下所有命令用於CentOS6.5系統下。用戶名爲uu。

Linux下find命令在目錄結構中搜索⽂件,並執⾏指定的操作。

  • Linux下find命令提供了很多查找條件,功能很強⼤,所以它的選項也很多。(即使系統中含有⺴絡⽂件系統( NFS),find命令在該⽂件系統中同樣有效,只要你具有相應的權限。)
  • 在運⾏⼀個⾮常消耗資源的find命令時,大都傾向於把它放在後臺
    執⾏,因爲遍歷⼀個⼤的⽂件系統可能會花費很⻓的時間(這⾥是指30G字節以上的⽂件系統)。

指令格式

find pathname -options [-print -exec -ok ...]

命令參數

  • pathname : find命令所查找的目錄路徑。例如⽤.來表⽰當前目
    錄,⽤/來表⽰系統根目錄。
  • -print: find命令將匹配的⽂件輸出到標準輸出。
  • -exec: find命令對匹配的⽂件執⾏該參數所給出的shell命
    令。相應命令的形式爲’command’ { } \;,注意{ }和\;
    之間的空格。
  • -ok: 和-exec的作⽤相同,只不過以⼀種更爲安全的模式來執⾏
    該參數所給出的shell命令,在執⾏每⼀個命令之前,都會給出提
    ⽰,讓⽤戶來確定是否執⾏。

命令選項

學習命令選項之前,先來看張圖,瞭解一下與文件相關的一些屬性。

這裏寫圖片描述

1. -name 按照文件名查找文件。 比如:

find ~ -name file //在當前用戶目錄下查找文件名爲file的文件
find -name file   //在當前目錄下查找文件名爲file的文件

來看看結果吧

這裏寫圖片描述

用戶目錄下有三個名爲file的文件,分別打印了各自的文件路徑。
當前目錄的file文件,打印了 ./file ,其中.表示當前目錄,/爲目錄分隔符。

find ~ -name file -exec ls -l {} \;  //顯示用戶目錄下file的詳細信息。相當於以文件信息替換 `{} \;` 

這裏寫圖片描述

2. -perm 按照文件權限來查找文件。

find ~ -perm 444 -exec ls -l {} \; //查找權限爲444的文件

444表示文件權限爲對於所有用戶都爲只讀,以字母r來表示。

這裏寫圖片描述

3. -user 按照文件屬主來查找文件。

find -user uu //查找用戶名爲uu的文件
  • 我的系統下只有一個用戶,即uu,所以所有文件名都會打印出來,就不給大家看結果啦。

4. -group 按照文件所屬的組來查找文件。

  • 指令使用形式如上。結果也一模一樣。

5. -size n: [c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計。

find -size +100c -size -500c -exec ls -l {} \; //查找文件大小在100到500字節之間的文件

看看結果

這裏寫圖片描述

若是已知要查找的文件大小,比如要查找451字節的文件,那麼直接 find -size 451c 就可以啦。

6. -mtime -n +n 按照文件的更改時間來查找文件。

-n表示文件更改時間距現在n天以內,+n表示文件更改時間距現在n天以前。 find命令還有-atime和-ctime 選項,但它們都和-m time選項相同。我這裏就不多說啦。

 find -mtime -3 -mtime +1 //查找文件更改時間距現在3天以內1天以前。

尷尬了,我的文件沒有符合條件的,所以就只看三天以內的哈!

這裏寫圖片描述

7. -type 查找某⼀類型的文件。

  • b - 塊設備⽂件。
  • d - 目錄。
  • c - 字符設備⽂件。
  • p - 管道⽂件。
  • l - 符號鏈接⽂件。
  • f - 普通⽂件。

find -type d // 查找目錄文件

當前目錄下,只有當前目錄和dir1位目錄文件。

這裏寫圖片描述

總結

find指令常用的命令選項如上。當然,只要記住,使用不是難事。但有些情況,往往需要把多個命令選項揉起來用,其實也不難,只要把命令選項記住了,想用哪個依次跟在後面就ok啦。
來看例子

find ~/bit_code -user uu -group uu -perm 664 -size +100c -size -500c -mtime +3 -exec ls -l {} \; //查找當前用戶bit_code目錄下用戶名和所屬組都是uu,權限爲664即rw-rw-r--,文件大小在100到500字節之間且3天以前修改的文件的詳細信息

這裏寫圖片描述

whereis指令

whereis命令只能用於程序名的搜索,⽽且只搜索⼆進制文件(參數-b)、 man說明文件(參數-m)和源代碼文件(參數-s)。
命令格式如下:

whereis [-bmsu] [BMS 目錄名 -f ] ⽂件名

find&whereis

和find相⽐, whereis查找的速度⾮常快,這是因爲linux系統會將系統內的所有文件都記錄在⼀個數據庫文件中,當使用whereis時,會從數據庫中查找數據,而不是像find命令那樣,通過遍歷硬盤來查找,效率⾃然會很⾼。
但是該數據庫文件並不是實時更新,默認情況下時⼀星期更新⼀次,因此,我們在用whereis查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件,卻⽆法查找到,原因就是因爲數據庫文件沒有被更新。

以上內容,如有錯誤,歡迎指點!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章