Linux命令與文件的查詢
1 腳本文件名的查詢
which(尋找“執行文件“)
參數-a :將所有由path目錄中可以找到的命令均列出,而不止第一個被找到的目錄名稱
以 ifconfig爲例
爲什麼會找不到呢?
原因在於which的查找機制,which是默認查找PATH內所規範的目錄,cd是bash內置的命令當然找不到啦,這裏我們使用type指令
可以看出cd是一個shell builtin 即就內置命令
2 文件名的查找
通常而言我們不常使用find指令,由於find指令需要在內存中查找,速度會很慢,所以我們會先使用whereis和locate來檢查,如果找不到再使用find,whereis和locate都是使用數據庫來查找,所以速度很快。
whereis(尋找特定文件)
參數:-b :只查找二進制格式文件
-m :只找在說明文件manual路徑下的文件
-s :只找source源文件
-u :查找不再上述三個選項中的其他文件
以ifconfig指令爲例
只找出跟passwd有關的是”說明文件“
locate
locate指令使用非常簡單,直接後面輸入”文件部分名稱“即可
參數:-i 忽略大小寫的差異
-r 後面可接正則表達式的顯示方式
以passwd爲例
只要含有 passwd在其中,就會被顯示出來。
使用限制:由於locate查找數據是由 已創建的數據庫庫/var/lib/mlocata/所查到的,數據庫信息需要更新,所以當我們新建一個文件夾後查找這個文件
由於數據庫並未更新,所以會查不到,我們可以採用手動更新數據庫的方式。---->直接輸入updatesb
find指令
這是一個很重要的指令,直接在內存中查找。
時間參數:以-mtime爲例
-mtime n :n爲數字,意義爲在n天之前的”一天之內“被更改過的文件
-mtime +n :列出在n天之前(不含n天本身)被更改的文件名
-mtime -n :列出在n天之內(含n天本身)被更改過的文件名
-newer file :file爲一個存在的文件,列出比file還要新的文件名
圖示爲:
以find /var -mtime4 爲例時間軸爲:
與用戶或用戶組有關的參數
-uid n:這個數字是用戶的賬號ID,記錄在/etc/passwd中與賬號名稱對應的數字
-gid n:n爲用戶組名的ID
-username :name爲用戶賬號名稱 如root
-groupname:name爲用戶組名
-nouser :尋找文件所有者不存在/etc/passwd的人
-nogroup:尋找文件的所用戶組不存在於etc/group中的文件
查找 /home下屬於dz的文件:
查找根目錄中不屬於任何人的文件
-name filename 查找文件名爲 1 的文件
-name [+ -]size 查找比size還要大的文件 size規格:c:代表byte,k代表1024bytes 要找
以找比50kb小的文件爲例
-type type:查找類型爲type的文件
以查找正規文件爲例(f)
文件權限參數
-pern mode :查找文件類型剛好等於 mode的文件
-pern -mode:查找文件權限 必須要全部包含mode權限的文件
-pern +mode 查找文件權限 包含任意mode權限的文件
比如說我們查找-rwx r-x r-x 即 -pern+755時候也會包括一個-rw- --- ---文件存在,因爲他 包含了-rw屬性
查找權限爲777的文件
權限爲包含任意一個777以內權限的文件
權限爲 必須包含777所有權限的文件
其他操作:
-exec command:commad 爲其他命令,-exec後面可接其他命令來處理查找的結果
如 將權限包含7000其中之一的文件 使用ls -l列出來
以find / perm +7000 -exec ls -l {} \; 指令爲例