一、查找大文件方法:
那么把这些大文件搜索出来呢?例如我要搜索当前目录下,超过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系统中查找大文件的方法大家掌握了吗,如果大家有更好的方法可以在评论区分享留言啊。
以上就是为各位朋友分享的相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多等着你!