Linux(三)
參考書:鳥哥Linux私房菜-第四版
- Linux文件與目錄管理(續(xù)上一篇)
Linux文件與目錄管理
file 查看文件類型
結構
file 文件名
[root@node1 ~]$ file b.txt
b.txt: ASCII text
[root@node1 ~]$
文件搜索
which($PATH查詢執(zhí)行檔)
結構:
which [-a] command
選項參數(shù)
-a: 將所有PATH目錄中可以找到的指令均列出,而不止第一個被找到的指令名稱
注意:這個指令是根據(jù)PATH環(huán)境變量所規(guī)范的路徑去搜索“執(zhí)行檔”的檔名,所以重點是找出執(zhí)行檔而已。history是內建指令,但是which預設是找PATH內所規(guī)范的目錄,所以可能出現(xiàn)執(zhí)行history缺找不到history指令的情況
[wangtao@node1 ~]$ which cd
/usr/bin/cd
[wangtao@node1 ~]$ which history
/usr/bin/which: no history in (/usr/local/app/mongodb4.4.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[wangtao@node1 ~]$
whereis(特定路徑中查詢文件名)
結構:
whereis [-lbmsu] 文件或目錄名
選項參數(shù)
-l: 可以列出whereis會去查詢的幾個主要目錄而已;
-b: 只找出binary格式的文件;
-m: 只找在說明文件manual路徑下的文件;
-s: 只找source來源文件;
-u: 搜尋不在上訴三個項目當中的其他特殊文件.
## 注意:該指令只會在特定的目錄中查詢,如果想知道whereis到的查詢了那些目錄,可以使用whereis -l查看
Locate/updatedb(文檔名)
結構:
locate[-ir] keeword
選項參數(shù)
-i: 忽略大小寫的差異;
-c: 不輸出檔名,經(jīng)計算找到的文件數(shù)量;
-l: 僅輸出幾行的意思,例如輸出5行,-l 5;
-S: 輸出locate所使用的數(shù)據(jù)庫文件的相關信息,包括該數(shù)據(jù)庫記錄的文件/目錄數(shù)量等;
-r: 后面可接正規(guī)表示法的顯示方式。
find(強大的查找指令)
結構:
find [PATH] [option] [action]
選項參數(shù)
與時間有關的選項:共有-atime,-ctime,-mtime,以-mtime說明
-mtime n: n為數(shù)字,表示在n天之前的(一天之內)被更懂過內容的文件;
-mtime +n: 列出在n天之前(不含n天本身)被更動過內容的文件檔名;
-mtime -n: 列出在n天之內(含n天本身)被更動過內容的文件檔名;
-newer file: file為一個存在的文件,列出比file還要新的文件檔名.
圖示[-4,4,+4]時間線

find_timeline.jpg
與使用者或組名有關的參數(shù)
-uid n: n為數(shù)字,這個數(shù)字是用戶的賬號ID,即UID,這個UID是記錄在/etc/passwd里面與賬號名稱對應的數(shù)字;
-gid n: n為數(shù)字,這個數(shù)字是組名的ID,即GID,這個GID記錄在/etc/group;
-user name: name為使用者賬號名稱,列如wangtao;
-group name: name為組名;
-nouser: 尋找文件的擁有者不存在/etc/passwd的人;
-nogroup: 尋找擁有群組不存在于/etc/group的文件,當自行安裝軟件時,很可能該軟件的屬性當中并沒有文件擁有者,這是可能的,在這個時候,就可以用-nouser與-nogroup搜尋;
與文件權限及名稱有關的參數(shù)
-name filename: 搜索文件名為filename的文件;
-size [+-]SIZE: 搜尋比SIZE還要大(+)或小(-)的文件。SIZE規(guī)格有:c-->byte,k-->Kb,M-->Mb;
-type TYPE: 搜尋文件的類型為TYPE的,類型主要有:一般正規(guī)文件(f),裝置文件(b,c),目錄(d),連結檔(l),socket(s),F(xiàn)IFO(p)等屬性;
-perm mode: 搜索文件權限“剛好等于”mode的文件,這個莫得為類似chmod的屬性值,例如-rwsr-xr-x的屬性為4755;
-perm -mode: 搜尋文件權限“至少擁有mode權限”的文件;
-perm /mode: 搜尋文件權限“包含任一mode權限”的文件。
操作演示
[root@node1 ~]# find /usr/bin/ -name passwd
/usr/bin/passwd
[root@node1 ~]# find /usr/share/awk/ -name *passwd*
/usr/share/awk/passwd.awk
[root@node1 ~]# find /run/udev -type s
/run/udev/control
[root@node1 ~]# find /usr/libexec/ -perm /7000
/usr/libexec/utempter/utempter
/usr/libexec/openssh/ssh-keysign
[root@node1 ~]# find /usr/bin/ /usr/sbin/ -perm /6000
/usr/bin/wall
/usr/bin/chfn
...
[root@node1 ~]#
額外可進行的動作
或與非操作符: -a表示and的意思,-o表示or,!表示反向選擇(非)
-exec command: command為其他指令,-exec后面可以再接額外的指令來處理搜尋的結果;
-print: 將結果打印到屏幕上,這個動作是預設動作
操作演示(查找/etc目錄下50k-60k之間的文件,列出文件容量大于50k且文件所屬人不是root的檔名):
[root@node1 ~]# find /etc -size +50k -a -size -60k -exec ls -lh {} \;
-rw-r--r--. 1 root root 58K 11月 21 2015 /etc/selinux/targeted/modules/active/base.pp
[root@node1 ~]# find /etc -size +50k -a ! -user root -type f -exec ls -lh {} \;
[root@node1 ~]#
示例中{},;,-exec這些東西意義如下

find_exec.jpg
{} 代表的是“由find找到的內容”,如上圖所示,find的結果會被放置到{}位置中;
-exec 一直到 \; 是關鍵詞,代表find額外動作的開始(-exec)到結束(\;),在這中間的就是find指令內的額外動作,當前示例是"ls -l {}";
因為;在bash環(huán)境下是由特殊意義的,因此利用反斜杠轉義。
over~~