Shell命令-搜索文件或目錄之which、find

文件及內容處理 - which、find

1. which:查找二進制命令,按環境變量PATH路徑查找

which命令的功能說明

which 命令用於查找文件。which 指令會在環境變量 $PATH 設置的目錄裏查找符合條件的文件。

which命令的語法格式

which [options] [--] programname [...]
which [參數...] [命令]

which命令的常用參數說明:

which 參數不多,表1爲 which 命令的參數及說明:

表1: which 命令的參數及說明

參數選項 解釋說明
-n<文件名長度>  指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。
-p<文件名長度>  與-n參數相同,但此處的<文件名長度>包括了文件的路徑。
-w   指定輸出時欄位的寬度。
-V  顯示版本信息。

which命令的實踐操作

範例1: which 查找二進制命令,按環境變量 PATH 路徑查找,顯示所有路徑

[root@m01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

範例2: 查找一個二進制命令的絕對路徑,例如 cp 命令

[root@m01 ~]# which cp
alias cp='cp -i'    <-->別名
    /bin/cp      <-->cp命令的絕對路徑

2. find:從磁盤遍歷查找文件或目錄

find命令的功能說明

find 命令用來在指定目錄下查找文件。任何位於參數之前的字符串都將被視爲欲查找的目錄名。如果使用該命令時,不設置任何參數,則 find 命令將在當前目錄下查找子目錄與文件。並且將查找到的子目錄和文件全部進行顯示。

find命令的語法格式

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
find path -option [ -print ] [ -exec -ok command ] {} \;

find命令的常用參數說明:

find 根據下列規則判斷 pathexpression,在命令列上第一個 - ( ) , ! 之前的部份爲 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 爲預設 expression。,表1爲 find 命令的參數及說明:

表1: find 命令的參數及說明

expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。

參數選項 解釋說明
-mount, -xdev 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件
-amin n 在過去 n 分鐘內被讀取過
-anewer file 比文件 file 更晚被讀取過的文件
-atime n 在過去n天內被讀取過的文件
-cmin n 在過去 n 分鐘內被修改過
-cnewer file 比文件 file 更新的文件
-ctime n 在過去n天內被修改過的文件
-empty 空的文件-gid n or -group name , gid 是 n 或是 group 名稱是 name
-ipath p, -path p 路徑名稱符合 p 的文件,ipath 會忽略大小寫
-name name, -iname name 文件名稱符合 name 的文件。iname 會忽略大小寫
-size n 文件大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。
-type c 文件類型是 c 的文件。常用的爲d:表示目錄,c:表示文件
-pid n process id 是 n 的文件

find命令的實踐操作

範例1: 將目前目錄及其子目錄下所有延伸檔名是 c 的文件列出來。

find . -name "*.c"

範例2: 將目前目錄其其下子目錄中所有一般文件列出

find . -type f

範例3: 將目前目錄及其子目錄下所有最近 20 天內更新過的文件列出

 find . -ctime -20

範例4: 查找 /var/log 目錄中更改時間在 7 日以前的普通文件,並在刪除之前詢問它們

find /var/log -type f -mtime +7 -ok rm {} \;

範例5: 查找前目錄中文件屬主具有讀、寫權限,並且文件所屬組的用戶和其他用戶具有讀權限的文件

find . -type f -perm 644 -exec ls -l {} \;

範例6: 爲了查找系統中所有文件長度爲0的普通文件,並列出它們的完整路徑

 find / -type f -size 0 -exec ls -l {} \;

今天就寫到這裏,有什麼疑問或出現什麼錯誤,隨時歡迎大神們發表評論指點迷津

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