当系统的c盘空间不足时,您可能会使用df、du或ncdu命令进行检测linux服务器代维,但这种命令只会显示当前目录的文件,并不会显示整个系统范围的文件。
--MageshMaruthamuthu
有用的原文链接
请访问文末的“原文链接”获得可点击的文内链接、全规格原图和相关文章。
致谢
编译自|
作者|MageshMaruthamuthu
译者|jessie-pang共计翻译:9篇贡献时间:68天
当系统的c盘空间不足时linux 搜索文件,您可能会使用df、du或ncdu命令进行检测,但这种命令只会显示当前目录的文件,并不会显示整个系统范围的文件。
您得耗费大量的时间才会用上述命令获取系统中最大的文件linux 搜索文件,由于要步入到每位目录重复运行上述命令。
这些技巧比较麻烦,也并不恰当。
假如是这样,这么该怎么在Linux中找到最大的10个文件呢?
我在微软上搜索了好久,却没发觉类似的文章,我反倒见到了好多关于列举当前目录中最大的10个文件的文章。所以,我希望这篇文章对这些有类似需求的人有所帮助。
本教程中linux系统编程,我们将教您怎么使用以下四种方式在Linux系统中查找最大的前10个文件。
方式1
在Linux中没有特定的命令可以直接执行此操作,因而我们须要将多个命令结合使用。
# find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10
1.4G /swapfile
1.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
93M /usr/lib/firefox/libxul.so
84M /var/lib/snapd/snaps/core_3604.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3247.snap
解读:
◈find:在目录结构中搜索文件的命令
◈/:在整个系统(从根目录开始)中查找
◈-type:指定文件类型
◈f:普通文件
◈-print0:在标准输出显示完整的文件名,其后跟一个空字符(null)
◈|:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
◈xargs:将标准输入转换成命令行参数的命令
◈-0:以空字符(null)而不是空白字符(LCTT译者注:即空格、制表符和换行)来分割记录
◈du-h:以可读格式估算c盘空间使用情况的命令
◈sort:对文本文件进行排序的命令
◈-r:反转结果
◈-h:用可读格式复印输出
◈head:输出文件开头部份的命令
◈n-10:复印前10个文件
方式2
这是查找Linux系统中最大的前10个文件的另一种方式。我们仍然使用多个命令共同完成这个任务。
# find / -type f -exec du -Sh {} + | sort -rh | head -n 10
1.4G /swapfile
1.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
93M /usr/lib/firefox/libxul.so
84M /var/lib/snapd/snaps/core_3604.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3247.snap
解读:
◈find:在目录结构中搜索文件的命令
◈/:在整个系统(从根目录开始)中查找
◈-type:指定文件类型
◈f:普通文件
◈-exec:在所选文件上运行指定命令
◈du:估算文件占用的c盘空间的命令
◈-S:不包含子目录的大小
◈-h:以可读格式复印
◈{}:递归地查找目录,统计每位文件占用的c盘空间
◈|:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
◈sort:对文本文件进行按行排序的命令
◈-r:反转结果
◈-h:用可读格式复印输出
◈head:输出文件开头部份的命令
◈n-10:复印前10个文件
方式3
这儿介绍另一种在Linux系统中搜索最大的前10个文件的方式。
# find / -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}
84M /var/lib/snapd/snaps/core_3247.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3604.snap
93M /usr/lib/firefox/libxul.so
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
1.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
1.4G /swapfile
解读:
◈find:在目录结构中搜索文件的命令
◈/:在整个系统(从根目录开始)中查找
◈-type:指定文件类型
◈f:普通文件
◈-print0:输出完整的文件名,其后跟一个空字符(null)
◈|:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
◈xargs:将标准输入转换成命令行参数的命令
◈-0:以空字符(null)而不是空白字符来分割记录
◈du:估算文件占用的c盘空间的命令
◈sort:对文本文件进行按行排序的命令
◈-n:按照数字大小进行比较
◈tail-10:输出文件结尾部份的命令(最后10个文件)
◈cut:从每行删掉特定部份的命令
◈-f2:只选择特定数组值
◈-I{}:将初始参数中出现的每位替换字符串都替换为从标准输入读取的名称
◈-s:仅显示每位参数的总和
◈-h:用可读格式复印输出
◈{}:递归地查找目录,统计每位文件占用的c盘空间
方式4
还有一种在Linux系统中查找最大的前10个文件的方式。
# find / -type f -ls | sort -k 7 -r -n | head -10 | column -t | awk '{print $7,$11}'
1494845440 /swapfile
1085984380 /home/magi/ubuntu-17.04-desktop-amd64.iso
591003648 /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
395770383 /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
394891761 /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
103999072 /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
97356256 /usr/lib/firefox/libxul.so
87896064 /var/lib/snapd/snaps/core_3604.snap
87793664 /var/lib/snapd/snaps/core_3440.snap
87089152 /var/lib/snapd/snaps/core_3247.snap
解读:
◈find:在目录结构中搜索文件的命令
◈/:在整个系统(从根目录开始)中查找
◈-type:指定文件类型
◈f:普通文件
◈-ls:在标准输出中以ls-dils的格式列举当前文件
◈|:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
◈sort:对文本文件进行按行排序的命令
◈-k:按指定列进行排序
◈-r:反转结果
◈-n:按照数字大小进行比较
◈head:输出文件开头部份的命令
◈-10:复印前10个文件
◈column:将其输入低格为多列的命令
◈-t:确定输入包含的列数并创建一个表
◈awk:模式扫描和处理语言
◈'{print$7,$11}':只复印指定的列
via:
作者:MageshMaruthamuthu[2]译者:jessie-pang校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出