2000 多字教你三招在 Linux 中找出大文件,最后一个命令简直太简单了!
你好,这里是网络技术联盟站。
使用 Windows 的朋友大家都使用过各类电脑管家,时不时去扫描电脑中有没有大文件,因为大文件会占用很大的磁盘空间,造成浪费,这个在 Windows 系统中很好实现,但是如果是 Linux 系统呢?
Linux 是一个基于文件的操作系统,其中包含许多不同大小的文件,在日常使用过程中,系统或用户会创建或下载大量文件,这样会消耗大量磁盘空间,从而导致存储错误或警告,本文瑞哥将教大家如何查找出 Linux 中的大文件。
1、find 命令
find 是 Linux 中使用最频繁的查找命令之一,谈到查到文件,那么 find 最有说话权,那么如何用 find 命令去查询大文件呢?
我们来举几个例子给大家参考:
1.1 查找某个目录下大小大于 50M 的文件
命令如下:
执行结果:
如图,目录/mnt/d/素材
中都是各种书籍和资料,所以查出来的结果比较多。
find /mnt/d/素材/ -xdev -type f -size +50M
命令中我们知道find
命令,/mnt/d/素材/
是目录,那么其他的参数是什么意思呢?
-xdev:代表仅在当前文件系统搜索
-type f:代表类型是文件 file
-size:代表文件的大小
+50M:代表文件的大小大于 50M
-50M 代表文件的大小小于 50M
这个执行结果大家有没有疑问,虽然是大于 50M 的文件,但是我不知道这个文件的大小到底是多大,怎么样才能打印出每个文件的大小呢?
1.2 查找某个目录下大小大于 50M 的文件,并且显示出每个文件的大小
执行结果:
如图查出来的文件结果都有大小,命令也很好理解,在上面的命令后面加-print | xargs ls -lh
。
-print:打印。
xargs:这个简单理解为将之前的命令作为参数传递给下一个命令,其实就是将
find /mnt/d/素材/ -xdev -type f -size +50M -print
的结果作为参数传递给ls -lh
命令。ls -lh:列举文件列表,并显示文件详细信息,包括文件大小。
从上面的截图中,大家也注意到了,虽然文件大小能看到了,但是这个适合我想看的爽心悦目,换句话说我想让结果按照文件大小进行排序,这个时候应该怎么办呢?
1.3 查找某个目录下大小大于 50M 的文件,并进行排序
这个时候我们可以基于 1.2 的命令进行改造:
find /mnt/d/素材/ -xdev -type f -size +50M -print | xargs ls -lh
这个命令已经显示大于 50M 的文件列表,并且列表中也显示了文件的具体信息,其中文件的大小在第 5 列,那么我们可以将find /mnt/d/素材/ -xdev -type f -size +50M -print | xargs ls -lh
命令整体进行管道处理,根据第 5 列进行降序排序:
执行结果:
很神奇吧,显示的结果已经根据文件的大小进行排序了,最大的文件 841M,最小的 52M。
我们来看下sort -k 5 -rh
:
sort:这个不用解释了,排序的命令。
-k 5:k 几就是根据列表中第几列进行排序,在上面的例子中,显示的文件列表信息第 5 列代表的是文件的大小,所以这里的 k 5 就是指根据第 5 列进行排序。
rh:反向也就是倒序排序。
我们再来演示一下一个例子,上面的列表数很多,假如我们只想查看排名前 5 的文件,这个时候怎么去查询呢?
1.4 查找某个目录下大小大于 50M 的文件,且排名前 5 的
在公布命令前,大家回想一下,如果对于一个文件的话,我们想要查看这个文件的前 5 行信息,我们应该用哪个命令?
没错,就是head
,在这里我们同样可以将 1.3 的命令作为管道传给head
命令进行处理,即将find /mnt/d/素材/ -xdev -type f -size +50M -print | xargs ls -lh | sort -k 5 -rh
命令传递给head
:
执行结果:
我们可以看出,列表就是排名前 5 名的文件列表。
head 5:就是前 5 的意思。
以上就是 find 命令的使用,下面我们再来介绍第 2 个命令:du
2、du
du 命令是disk usage
的缩写,意思就是磁盘使用。很明显,du 命令就是列出文件和文件夹的磁盘使用情况或存储使用情况。
我们也可以用 du 命令结合 sort、head 等命令达到找出大文件的效果。
我们先来介绍一下du
命令的基本使用:
执行结果:
如图,目录/mnt/d/素材/PDF
都是 PDF 书籍,du -ah
命令中:
-a:代表文件详细信息
-h:将文件大小格式化
查找某个目录下最大的文件
如果用 find 命令应该怎么做?
这个意思很好理解,先倒叙排序,然后找到第一个,那么第一个一定最大。
如果用 du 命令应该怎么做呢?
一方面,我们直接使用 du 命令查询排名前几个的文件,用肉眼去观察最大的:
执行结果:
如果,我们看到结果中第一行是/mnt/d/素材/PDF
目录的总大小,第二行501M /mnt/d/素材/PDF/深入理解计算机系统 第三版.pdf
才是最大的那个文件。
这个看起来有点难受呀,我明明就想找出最大的文件,不想去肉眼去判断,这个时候怎么办?
du 命令不能直接去实现,需要结合 find 命令去指定文件类型,我们来看下下面这条命令:
执行结果:
先看结果,是不是达到了我们的预期效果,很显然是的。
我们来解释一下这条“长长”的命令find /mnt/d/素材/PDF -type f -exec du -ah {} + | sort -k 1 -rh | head -n 1
,其实这个命令也很简单,我们将其拆分成三个部分:
find /mnt/d/素材/PDF -type f
-exec
du -ah {} + | sort -k 1 -rh | head -n 1
find /mnt/d/素材/PDF -type f
不用说了,我们上面讲过,意思就是在/mnt/d/素材/PDF
目录下搜索,并且搜索的类型是文件。
-exec
意思就是执行命令,将查找到命令后将结果传输到下一个命令,有点像管道的意思,find 的结果将包裹在{}中。
du -ah {} + | sort -k 1 -rh | head -n 1
命令就是展示某个目录下文件的详细信息,并且根据第一列进行倒序排序,并且选择展示第一个文件。
最终我们就能通过此命令找出大小最大的文件。
3、ls
ls 命令我说是 Linux 系统中使用最为频繁的命令,大家没有意见吧?如果说 ls 也能找出最大的文件或者排好序的文件列表的话,那该有多爽。
ls 命令还真能达到如此效果,我们先直接放出命令:
执行结果:
看到这里,是不是直呼牛逼,虽然不是一次性查出最大的文件,不过那么简洁的命令我觉得最舒服了,还记那么长的命令干啥。
我们来看下 ls 的几个参数:
-l:长格式,也就是显示文件的详细信息
-S:根据文件的大小进行排序
-h:格式化文件大小,人类易读
总结
在 Linux 中查找大文件的场景非常多,本文瑞哥给大家介绍了三个命令:find、du、ls。其中 find 命令最为灵活,扩展性强,但是论命令简单,还是 ls 是王者。
最后感谢您的阅读,如果觉得文章对您有帮助,别忘了点赞👍、收藏⭐哦!有任何问题,欢迎在下方评论区与我讨论!!!
版权声明: 本文为 InfoQ 作者【wljslmz】的原创文章。
原文链接:【http://xie.infoq.cn/article/eccb29b5f7509e568a3a56082】。未经作者许可,禁止转载。
评论