這篇文章給大家介紹Linux系統怎樣查找大文件或目錄,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
那么把這些大文件搜索出來呢?例如我要搜索當前目錄下,超過800M大小的文件
find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr
注:不過有時候排列的順序并不完全是按大小一致,這個是因為du命令的參數h所致,你可以統一使用MB(參數m)來顯示,這樣就能解決這個問題。
備注:
-print0的作用:
-print 在每一個輸出后會添加一個回車換行符,-print0則不會,而是輸出一個 NULL 字符 (‘\0’) 。
xargs -0的作用:
xargs -0將\0作為定界符。
[bash-4.1.5] ; find -name ‘*.log’ | xargs rm
rm: cannot remove `./file’: No such file or directory
rm: cannot remove `1.log’: No such file or directory
rm: cannot remove `./file’: No such file or directory
rm: cannot remove `2.log’: No such file or directory
原因其實很簡單, xargs 默認是以空白字符 (空格, TAB, 換行符) 來分割的, 因此文件名 ./file 1.log 被解釋成了兩個記錄 ./file 和 1.log, 不幸的是 rm 找不到這兩個文件.
為了解決此類問題, 聰明的人想出了一個辦法, 讓 find 在打印出一個文件名之后接著輸出一個 NULL 字符 (‘\0’) 而不是換行符, 然后再告訴 xargs 也用 NULL 字符來作為記錄的分隔符. 這就是 find 的 -print0 和 xargs 的 -0 的來歷吧.
由于平時又疏于管理,監控文件或日志文件的增長,有時候會占用大量甚至擠爆磁盤空間。
這時需要快速了解哪些目錄變得比較大,此時可以借助du命令來幫我們解決這個問題。
du -h –max-depth=1
結果:
16K ./lost+found
33G ./flash_recovery_area
37G ./oradata
70G .
如果想知道flash_recovery_area目錄下面有哪些大文件夾,那么可以將參數max-depth=2
如果你想對搜索出來的結果進行排序,那么可以借助于sort命令。如下所示:
du -h –max-depth=2 | sort -n
結果:
3.5G ./flash_recovery_area/EPPS
16K ./lost+found
29G ./flash_recovery_area/backup
33G ./flash_recovery_area
37G ./oradata
37G ./oradata/epps
70G .
有時候搜索出來的結果太多了(譬如,從根目錄開始搜索),一直在刷屏,
如果只想查出最大的10個文件夾,怎么辦呢?此時就要借助head命令來顯示了
du -hm –max-depth=2 | sort -nr | head -10
結果:
407480 .
167880 ./u04
158685 ./u02/oradata
158685 ./u02
152118 ./u04/oradata
70775 ./u03
37705 ./u03/oradata
33070 ./u03/flash_recovery_area
5995 ./u01/app
5995 ./u01
關于Linux系統怎樣查找大文件或目錄就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。