分享

统信UOS如何查看某一个文件夹中最大的n个文件

李白 2021-11-4 15:39:29 发表于 已解决 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 1131
没有哪个单独的命令是可以做到这一点的,UOS系统为linux,但Linux命令的特点就是可以多个命令结合使用
比如管道符 | ,就可以将一个命令的输出座位另一个命令的输入,这个想必也是人尽皆知的。

首先说下思路
1、首先要先查找指定文件夹下的文件的路径


2、打印出指定文件夹下的文件大小


从这里看到,find并没有去查找指定的文件夹下的文件(思路并没有错)

3、把打印出的文件从大到小进行排序


head -n 3表示只查看3个结果,这个一定要放到最后
这里也没有去查找指定的文件夹,肯定是find的输出传给du命令时出现了问题,原因是因为find的输出的文件名加一个换行符,导致du命令接受find的输出的时候出错了,du命令就打印了当前目录下的文件,不过问题不大,我们用-print0 选项把 find 输出的换行符改成 \0,这个大家很熟悉吧,字符串的结束标志,再配合用 xargs 将其分割成小块传给 du 命令,接下来我们试一下

4、find /var/log -type f -print0 | xargs -0 du -h | sort -rh | head -n 3

这下我们可以看到输出的是我们指定的/var/log文件夹了
温馨提示:在服务器上尽量不要使用find / ,有可能会崩溃的

如果嫌这个命令太长的话,我们可以写个脚本去代替这个长长的命令
脚本我给大家贴在下面了
#!/bin/bash

#FileName:      findName.sh
#Date:         2021-09-22
#Email:        302631006@qq.com
#Description:           此脚本可以查找出指定目录下的最大的一个文件
#脚本用法:     1、 前提是使用root用户执行      ./findName.sh /var/log
#               2、 普通用户执行                sudo ./findName.sh /var/log     注意:"/var/log"这个是文件目录,可以进行自定义



if [ $# -lt 1 ];then
        echo "请输入您要查找的路径"
        exit 2
fi

find $1 -type f -print0 | xargs -0 du -h | sort -rh | head -n 1



这里是脚本用法哦,脚本我也上传附件了,有需要的可以下载下来用



版权说明:论坛帖子主题均由合作第三方提供并上传,若内容存在侵权,请进行举报

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系在线客服