日常開發工作中,我們經常會碰到有些配置檔案或者日誌檔案找不到的情況,只記得基本的名字,記不得完整路徑。為了更好查詢到檔案,今天我們就來聊下檔案查詢工具。
關於檔案查詢工具,主要兩個:
-
locate 通過名字來進行檔案查詢,較快
-
find 在目錄搜尋檔案,較慢
locate
第一個我們要講的就是locate,locate檔案查詢比較簡單,並且速度很快。
主要是因為它是直接搜尋locatedb檔案資料庫,這個資料庫主要是系統檔案資料,它是由cron程式進行定期把檔案更新的,通常是一天一次。在Linux有些發行版,如果locate不能工作,就是因為剛剛初始化系統導致locatedb沒有資料。
如果你要進行全盤搜尋locate是比較方便快捷的快的,也是最簡潔的。
比如我要找我的 db.sqllite3 這個臨時db檔案。
locate db.sqlite3
[圖片上傳失敗…(image-8bba54-1547888201688)]
find
第二個就是我們的find,臨時用一下locate還行,但是如果我們有稍微多一些需求就不太方便了。所以更強大的查詢工具就是find了。
find工具能夠根據檔案的各種屬性來進行查詢,非常有利於我們進行高階查詢,功能強大,往往引數指令會多一些。
為了簡單,這裡面我舉幾個簡單而常用的例子。
find . -name views.py
# 在當前目錄查詢檔名為為views.py
find ~ -size +5M -name “.jpg” # 在主目錄查詢大於10M的檔案*find . -type d | grep yourdir
# 查詢目錄下的目錄檔案並且篩選**yourdir
*find . -name “.BAK” -delete # 查詢以BAK為結尾檔案刪除 刪除前進行測試用 -delete替換為 -print 或者可以在git版本控制測試。
find . -name
“*.py” -exec ls -al
“{
}”
;
# 當前目錄查詢所有py檔案並且列印 -exec喚醒其他命令,-exec 後面跟命令 {
}表示當前路徑名符號表示,分號是強制要求界定命令結束。
我通常比較喜歡用簡單的方式,而不是更為高階的方式,通過cheat工具給一個其他案例,強烈推薦大家去了解一下cheat命令列幫助工具,對比man,info幫助工具,cheat非常方便日常學習使用。
上面其他案例中exec我已經講了,awk文字處理工具後面我會單獨講也不囉嗦了。
這裡簡單提一下xargs,它從標準輸入接受輸入,並把輸入轉換為特定命令的引數列表。可以說xargs是給其他命令傳遞引數的一個過濾器,也是組合多個命令的一個工具。
[圖片上傳失敗…(image-71f55b-1547888201688)]
通過find命令輸入被管道到xargs命令,反過來xargs為ls命令構建引數列表,執行ls命令。
關於檔案查詢locate,find 你學會了麼?
Linux日常命令使用,同Docker容器化一樣我會以一個系列進行分享,今天是第四篇,後面我將持續分享更多內容,從Linux日常命令使用到shell指令碼程式設計,歡迎持續進行關注。濤哥將會用最簡單使用的方式分享開發技術的各個方面。
相關文章: