在我的 lubuntu 24.04 上,我有一个小的 / 文件系统,因此我会不时检查是否有足够的可用空间。
为此我使用
sudo du -xh -d 3 / | sort -h -r | egrep -v '*M|*K'
grep: warning: * at start of expression
grep: warning: * at start of expression
27G /
12G /var
10G /var/cache
9,8G /var/cache/apt
9,6G /usr
6,0G /usr/lib
5,6G /boot
2,8G /boot/ubuntu-20.10
2,5G /boot/bullseye
2,2G /usr/share
1,9G /usr/lib/x86_64-linux-gnu
1,7G /var/lib
这不是我的空间消失了的问题,我无法弄清楚警告是什么意思以及如何避免它。
env | grep -i shell
SHELL=/bin/bash
egrep
期望一个正则表达式,但您给了它*M|*K
。两个备选表达式的开头都有一个星号。星号在正则表达式中具有特殊含义:它表示“前一个内容重复零次或多次”。但在这里,没有前一个内容可以重复。因此出现警告。您是否尝试在通配符语法中使用搜索模式,使用
*
通配符?grep
不起作用。使用grep
,您可以使用正则表达式。re
ingrep
实际上代表“正则表达式”。在正则表达式中,
*
是量词。量词指定应识别前一个元素的频率。例如,要识别“至少一个‘a’,后跟一个‘b’”,您可以使用模式a+b
。在您的模式中,量词
*
位于最开始的位置,因此没有前面的元素来指定数字。您基本上是在说,“查找零个或多个实例,然后恰好一个‘M’”。这实际上不起作用;)根据 POSIX 标准,*
正则表达式最开头的 A 实际上应该产生未定义的结果。幸运的是,您不必在搜索模式中指定整个匹配项。因此,您只需搜索“恰好一个 M 或恰好一个 K,后跟一个空格字符”,如下所示
如果此确切模式恰好出现在您的文件路径中,则也会找到这些情况。您可以使正则表达式更复杂以排除这些误报,但这超出了本答案的范围。