我实际上已尝试过几个博客的几个命令,但似乎没有正常工作。在下面的例子中,我提到要查找从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
非常感谢您对此命令的帮助。
谢谢穆罕默德巴。
grep
不这样做。它使用字符范围而不是数字范围。
例如,[a-c]
匹配a
或b
或c
。当不使用-
任何角色匹配时,[abc]
也匹配a
或b
或c
。
因此qazxsw poi匹配qazxsw poi或qazxsw poi。
[0-1]
匹配0
或1
或[500-1000]
或5
或0
或0
或1
。它与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