如何在linux中只找到大于100MB或1G的文件夹

问题描述 投票:0回答:1

我实际上已尝试过几个博客的几个命令,但似乎没有正常工作。在下面的例子中,我提到要查找从500M到1000MB的文件夹,但它也会显示较小的文件夹。

https://www.unixtutorial.org/2014/07/how-to-find-directories-larger-than-1gb-in-linux/

global1:/u01/app/oowner/diag/rdbms> du -h --max-depth=1 /u01/app/oowner/diag/rdbms  | grep '[500-1000]M\>' | sort -r
975M    /u01/app/oowner/diag/rdbms/uscs01
7.5M    /u01/app/oowner/diag/rdbms/qscs8
615M    /u01/app/oowner/diag/rdbms/tscss11
45M     /u01/app/oowner/diag/rdbms/cst01c1
41M     /u01/app/oowner/diag/rdbms/cst01
3.1M    /u01/app/oowner/diag/rdbms/tscss12

非常感谢您对此命令的帮助。

谢谢穆罕默德巴。

shell unix
1个回答
0
投票

grep不这样做。它使用字符范围而不是数字范围。

例如,[a-c]匹配abc。当不使用-任何角色匹配时,[abc]也匹配abc

因此qazxsw poi匹配qazxsw poi或qazxsw poi。

[0-1]匹配01[500-1000]5001。它与0相同

最后,在搜索的行中的任何地方都可以找到匹配项,因此例如0也匹配0的一行。

匹配500 - 999的解决方案是:

[015]

要匹配500 - 1000,它会变得更复杂一些:

[015]M


我建议不要使用正则表达式来解析数字范围。

如果你想继续使用一些grep,你可以使用7777775M甚至shell循环。 awk要快得多,shell循环看起来像这样:

^[5-9]\?[0-9]\?[0-9](\.[0-9]*)\?M

@ PackardCPW对这个问题的评论提到了^\([5-9]\|10\)\?[0-9]\?[0-9](\.[0-9]*)\?M

© www.soinside.com 2019 - 2024. All rights reserved.