我曾经运行过这样的命令: find /dev | grep sd* 输出连接到我的计算机的所有驱动器的列表。看来我现在必须在星星之前添加任何随机字符才能获得如下所示的相同效果:

我在各种 Ubuntu 12.04 服务器上对此进行了测试并得到了相同的效果,所以我认为这不是我桌面上的随机现象。这是一个新的变化,一个错误,还是一直这样,我的内存需要更换?
你有两个问题:
sudo find /dev | grep sd*不像以前那样工作,因为您当前的工作目录中有一个文件或文件夹,它会触发来自 bash 的 globbing。echo在您的命令前面添加一个以查看通配符对您的命令有何影响
echo grep sd*
Run Code Online (Sandbox Code Playgroud)
通过添加随机附加字符,通配符不再与文件/文件夹匹配,并且 grep 继续按预期工作。
为了防止 globbing 开始,你必须'...'围绕你的任期。(双引号也可以。)这将使 grep 像以前一样表现:
sudo find /dev | grep 'sd*'
Run Code Online (Sandbox Code Playgroud)
现在正则表达式按预期工作,让我们看看*正则表达式中的含义,而不是文件通配符。简而言之,它的意思是“最后一个字符零次或 n 次”,这很可能不是您想要的。使用'sd*'您可能会/dev/stdout在输出中看到,因为stdout以 a 开头,s后跟零个或多个d's。
在你的情况下,一个简单的:
sudo find /dev | grep sd
Run Code Online (Sandbox Code Playgroud)
应该是您需要匹配的全部内容。
或者,当然,您可以只运行以下命令之一(使用文件 glob 模式,而不是正则表达式)来为您提供相同的输出:
find /dev -name 'sd*'
ls -1 /dev/sd*
Run Code Online (Sandbox Code Playgroud)