如何在 bash 脚本中使用 find 命令检查目录大小

Posted

技术标签:

【中文标题】如何在 bash 脚本中使用 find 命令检查目录大小【英文标题】:how to check the directory size using find command in bash script 【发布时间】:2020-12-15 13:00:29 【问题描述】:

我需要找到大于特定值的目录大小,我为此编写了一个脚本。但是 find 命令不接受 -size 部分。谁能帮我解决这个问题

echo -e "This script will generate report for directories which consumes more size than the given value"
read -p " Enter the file system or directory full path: " path
read -p " This script will check the directories which is greater than the given size Please Enter the directory size in GB: " size
find $path  -type d -size +$sizeG -exec ls -ld  \;

错误

find: invalid -size type `+'

【问题讨论】:

你的命令寻找一个名为sizeG的变量;你想要$sizeG,或"$size"G,或"$sizeG" 目录上的 -size 可能无法按预期工作。它不计算目录中文件的大小。您可能需要改用du $path 并过滤掉您想要的目录。 根据@TedLyngmo 的评论,我以“不重复”的形式重新打开,因为修复变量名错误不会产生您想要的结果。 这能回答你的问题吗? Check folder size in Bash 如果您想要整个卷的大小,请使用 df 而不是 du 【参考方案1】:

为了消除 bash 脚本中的错误替换错误。用双倍配额包装可变大小。

    echo -e "This script will generate report for directories which consumes more size than the given value"

read -p " Enter the file system or directory full path: " path
read -p " This script will check the directories which is greater than the given size Please Enter the directory size in GB: " size

echo "+$sizeG";

find $path  -type d -size "+$sizeG" -exec ls -ld  \;

【讨论】:

我试过了,但没有用。为了缩小问题的范围,我尝试单独执行 find 命令,发现如果我们使用 -type d 它不会给出结果。查找 /root -size +10M -type d -exec ls -ld \; 如果您收到权限被拒绝错误。尝试使用 Sudo 权限。 来自 ubuntu 的示例:fatihsennik@fatihsennik:~$ find / -type d -size +10G -exec ls -ld \;查找:'/etc/polkit-1/localauthority':权限被拒绝 没有。这不是权限被拒绝错误。 output 不会得到我们使用 type 的 id 但如果我们使用 type f 会得到结果

以上是关于如何在 bash 脚本中使用 find 命令检查目录大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 bash 脚本中处理 find 的结果?

如何在bash脚本中使用命令行参数?

如何在不运行Bash脚本的情况下语法检查?

Bash 脚本 - 需要 find 命令来输出用双引号括起来的文件路径而没有换行符

检查用户是否有权执行文件

Linux 第17天 bash,find,正则,命令历史