这篇文章给大家介绍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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。