Linux系統快速查詢檔案的技巧
常用命令中,有些命令可以幫助我們查詢二進位制檔案,幫助手冊或原始檔的位置,也有的命令可以幫助我們查詢磁碟上的任意檔案,今天我們就來看看這些命令如何使用。 |
which
which命令會在PATH變數指定的路徑中,搜尋某個系統命令的位置。例如:
which -a which #檢視命令which所在位置,-a參數列示找出所有 /usr/bin/which /bin/which
PATH變數有哪些內容呢?我們來看一下(不同電腦可能不同):
echo $PATH /home/hyb/bin:/home/hyb/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin PATH環境變數存放著一些路徑資訊,例如/usr/bin,當你在shell終端敲入一個命令,但是在PATH中包含的路徑下沒有時並且也不是內建命令時,就會提示:command not found。
當你已經安裝了一個命令,但是使用時卻提示找不到該命令,可以檢視該環境變數,是否有你安裝命令的路徑。
所以是不是明白了為什麼有些命令或程式需要新增環境變數才能直接使用了吧?
whereis
whereis命令用於搜尋程式的二進位制檔案,原始碼檔案或幫助文件。例如: whereis ls #如果上述三者有,則三者都會顯示。 ls: /bin/ls /usr/share/man/man1/ls.1.gz whereis -m ls #只檢視ls的幫助手冊 ls: /usr/share/man/man1/ls.1.gz whereis -b ls #只查詢ls的二進位制檔案 ls: /bin/ls whereis stdio.h #查詢stdio.h標頭檔案,和幫助手冊 stdio: /usr/include/stdio.h /usr/share/man/man3/stdio.3.gz 同樣地,它不能查詢到內建命令。
type
type用於檢視命令型別,一般有以下型別:
alias:別名 keyword:關鍵字 builtin:內建命令 file:外部命令 而常見引數如下: -t 輸出型別名,如file -p 如果是外部命令,則顯示其所在路徑 -a 對於外部命令,它會顯示命令路徑,命令型別等資訊 我們來看幾個例子: type ls #ls是一個別名 ls is aliased to `ls --color=auto' type cd #cd是一個內建命令 cd is a shell builtin type find find is /usr/bin/find type function #function是一個shell關鍵字 function is a shell keyword type -a which #顯示所有路徑 which is /usr/bin/which which is /bin/which
locate
前面所說的命令都限於查詢命令,幫助手冊或原始檔,而locate用於快速查詢任何檔案。它從一個系統資料庫進行檔案查詢,而不需要遍歷磁碟,因此速度極快。通常該系統資料庫每天更新一次(可以檢視系統的/etc/cron.daily/mlocate,不同系統可能不一樣)。
常見選項如下: -e 僅查詢存在的檔案 -q 安靜模式,不會顯示任何錯誤訊息 -n 至多顯示 n個輸出 -r 使用正規運算式 -i 查詢忽略大小寫 -c 列印匹配結果數量 假設當前目錄早已存在以下檔案: locate.txt locate.log LOCATE.zip 我們來看一些例項。 快速查詢檔案 locate locate.txt #查詢locate.txt /home/hyb/workspaces/shell/locate/locate.txt 查詢存在的檔案 locate locate.txt #查詢之前刪除locate.txt #雖然檔案不存在,但是仍然被查詢出來 /home/hyb/workspaces/shell/locate/locate.txt locate -e locate.txt #-e引數可以查詢只存在的檔案 (由於該檔案不存在,因此也不會被查詢出來) 查詢計算檔案的數量 locate -c locate.log #只計算查詢到的數量 1 忽略大小寫查詢 locate -i locate.zip /home/hyb/workspaces/shell/locate/LOCATE.zip 使用正規表示式 普通的查詢是模糊匹配的,因此只要目標名稱中包含要搜尋的名稱,都會被搜尋出來,但是我們可以利用正規表示式,來精確查詢。 locate -r /locate.log$ #查詢以/locate.log結尾的檔案 結合正規表示式,locate有更豐富的查詢方式,這裡不展開。 locate查詢存在的一個問題是,如果最近有檔案被刪除,它仍然能找出來,最近有檔案增加,它卻找不到。也就是說,它的查詢並不具備實時性。當然我們可以手動執行updatedb命令來更新資料庫(可能需要root許可權)。
find
find命令是linux下一個強大的查詢命令。與locate命令相比,它需要遍歷磁碟檔案,因此查詢速度較慢,但正因如此,它的實時性比locate好得多。另外一方面,find命令的查詢條件比locate豐富得多。
以名稱為條件 最常用的恐怕就是以檔名為條件了,涉及引數-name,-iname,例如: 當前目錄下查詢以sort開頭的檔案: find ./ -name "sort*" ./sort4.txt ./sort2.txt ./sort3.txt ./sort.txt find ./ -iname "SORT.txt" #忽略大小寫 ./sort.txt 以許可權為條件 有時候需要查詢特定許可權的檔案,可以使用-perm引數,例如查詢當前目錄下許可權為777的檔案: find ./ -perm 777 ./test ./sort.txt 以檔案型別為條件 涉及引數-type,例如要查詢當前目錄下的符號連結檔案: find ./ -type l ./test ls -al test lrwxrwxrwx 1 hyb hyb 8 11月 24 10:10 test -> home.zip 主要型別有: f 普通檔案 d 目錄 b 塊裝置檔案 c 字元裝置檔案 l 符號連結 s 套接字 p 管道檔案 以檔案大小為條件 涉及引數-size,例如: find ./ -size 1k #查詢當前目錄下小於1k的檔案 ./test ./sort4.txt ./sort2.txt ./sort3.txt ./test.sh ./sort.txt find -size +1M #查詢當前目錄下大於1M的檔案 ./test.zip 常用單位有: k 千位元組 M 兆位元組 G 吉位元組 c 位元組 b 塊,一般為512位元組 w 字大小,兩個位元組 以歸屬為條件 涉及引數-user,-nouser,-group,-nogroup等,例如: find ./ -user root #查詢當前目錄下root使用者的檔案 find ./ -nouser #查詢當前目錄下root使用者的被刪除的檔案 -group,-nogroup類似的用法,只不過條件是使用者組。 以時間為條件 涉及引數-mtime,-atime,-ctime,-newer,-anewer,-cnewer,-amin,-cmin等,例如: find ./ -mtime 3 #查詢3天前更改過的檔案 find ./ -mtime -3 #查詢3天內更改過的檔案 find ./ -mtime 0 #查詢今天更改過的檔案 find ./ -newer sort.txt #查詢比sort.txt修改時間更新的檔案 find ./ -anewer sort.txt #查詢比sort.txt訪問時間更新的檔案 find ./ -amin 5 #查詢5分鐘之前訪問過的檔案 注: atime 最後訪問時間 mtime 最後修改時間 ctime 最後修改時間,這裡包括屬性和許可權 find命令的查詢條件比較多,而其用法也非常豐富,本文僅簡單介紹,後面的文章將會介紹find的一些高階用法。
總結
which命令可用於查詢命令位置。 whereis可查詢命令的位置,手冊,原始檔等。 which和whereis都不能查詢內建命令位置。 locate優點:查詢速度塊;缺點:模糊匹配,匹配路徑,實時性差。 find優點:準確查詢,功能豐富;缺點:速度較慢。 find高階用法將在後面的文章介紹。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2564625/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 5種快速查詢容器檔案系統中檔案的方法
- Mac系統怎麼快速查詢大檔案?Mac
- 你知道在Linux系統下都有哪些命令可以快速查詢到對應檔案嗎?Linux
- 4個快速查詢Linux歷史命令的技巧(history)Linux
- Trickster for mac - 快速查詢檔案工具Mac
- Trickster for mac(快速查詢檔案工具)Mac
- linux的檔案系統Linux
- Linux檔案系統Linux
- [Linux]檔案系統Linux
- Linux系統篇-檔案系統&虛擬檔案系統Linux
- Linux系統檔案系統及檔案基礎篇Linux
- 論Linux檔案系統Linux
- Linux AUFS 檔案系統Linux
- Linux檔案系統的實現Linux
- 分散式檔案系統(HDFS)與 linux系統檔案系統 對比分散式Linux
- 『學了就忘』Linux檔案系統管理 — 57、Linux檔案系統介紹Linux
- Linux系統中常見的檔案系統有哪些?Linux
- Linux系統掛載win系統的共享檔案Linux
- Linux 檔案查詢Linux
- 檔案系統(十一):Linux Squashfs只讀檔案系統介紹Linux
- Linux下的檔案系統結構Linux
- linux之路(五)檔案系統Linux
- Linux檔案系統、目錄Linux
- Linux 檔案系統詳解Linux
- linux 檔案系統擴容Linux
- Linux檔案系統詳解Linux
- 推薦2款檔案系統中查詢檔案的工具
- Linux作業系統支援的檔案系統有哪些?Linux作業系統
- Linux 5.12 的 exFAT 檔案系統更快刪除大檔案Linux
- 如何清理Mac系統中殘留的檔案和快取檔案Mac快取
- 導覽Linux系統檔案系統型別Linux型別
- Linux系統程式設計【4】——檔案系統Linux程式設計
- windows10怎麼搜尋檔案_win10如何快速查詢檔案WindowsWin10
- Linux系統的目錄及重要檔案Linux
- Linux系統中建立檔案常用的方法!Linux
- Linux檔案查詢工具的探索Linux
- Linux系統網路檔案配置Linux
- 12_Linux檔案系統概念Linux