用shell查詢某目錄下的最大檔案

2021-09-07 09:54:44 字數 951 閱讀 3624

這是乙個很有趣的問題,因為作為乙個shell菜鳥,我第一時間是沒有任何想法的。心裡納悶為什麼這樣的操作linux居然沒有直接的命令實現這樣的查詢。

很自然地,第一感覺就是用awk去實現,因為菜鳥我看awk看得傻了:

ls -l | awk '/^[^d]/ ' | sort -nr | head -1

明顯ls檢視完整的檔案資訊,過濾掉d開頭的東東(目錄),取出檔案大小$5和名字$9兩項,排序,取第乙個

很自然問題就變的清晰,值得討論的是怎麼實現前面過濾出檔案大小和名字這乙個過程。後面的sort和head不管用什麼方法都一樣的。

baidu這個問題,發現某論壇裡有大神的回答。主要是針對連子目錄都能查詢的。因為大神用了find命令:

find -type f -exec stat -c "%s %n" {} \; | sort -nr | head -1

預設路徑是當前目錄裡,執行命令stat,同樣是返回大小(以byte為單位的)和名字,blah blah。注意stat不是state就是了,某菜鳥表示每次都敲錯。

後來在某本基礎教材看到另外乙個途徑,用了du命令,異常膜拜:

du -s * | sort -nr | head -1

比前面awk簡單很多。-s引數會返回當前目錄裡的檔案的大小,*會drill down出每個檔案的大小,不包括目錄的總大小。

不過呢,後面還是仔細學習了一下,發現這個方法是把子目錄作為乙個檔案來看待的。所以最大檔案可能是某個子目錄,而不是某個檔案。好處是,du的可以設定size顯示的單位,比較傻瓜的是直接用-h引數,所謂的human-readable的形式。

所以綜上所述,還是前面兩個命令好了,第乙個是只查詢根目錄最大檔案,第二個是遞迴到每個子目錄裡找出最大檔案。至於du往往會涉及到子目錄的總和,所以第三個命令的功能是:查詢當前目錄下,最大的檔案或者目錄。

linux下查詢某目錄下所有檔案包含某字串的命令

linux下查詢某目錄下所有檔案包含某字串的命令 從檔案內容查詢匹配指定字串的行 grep 被查詢的字串 檔名 從檔案內容查詢與正規表示式匹配的行 grep e 正規表示式 檔名 查詢時不區分大小寫 grep i 被查詢的字串 檔名 查詢匹配的行數 grep c 被查詢的字串 檔名 從檔案內容查詢不...

linux下查詢某目錄下所有檔案包含某字串的命令

linux下查詢某目錄下所有檔案包含某字串的命令 從檔案內容查詢匹配指定字串的行 grep 被查詢的字串 檔名 從檔案內容查詢與正規表示式匹配的行 grep e 正規表示式 檔名 查詢時不區分大小寫 grep i 被查詢的字串 檔名 查詢匹配的行數 grep c 被查詢的字串 檔名 從檔案內容查詢不...

linux下查詢某目錄下所有檔案包含某字串的命令

linux下查詢某目錄下所有檔案包含某字串的命令 linux下查詢某目錄下所有檔案包含某字串的命令 從檔案內容查詢匹配指定字串的行 grep 被查詢的字串 檔名 www.2cto.com 從檔案內容查詢與正規表示式匹配的行 grep e 正規表示式 檔名 查詢時不區分大小寫 grep i 被查詢的字...