为什么使用 of*(1)*
会删除目录中的所有内容?那么如何选择(1)
名称中间有的所有文件呢?
使用的命令是rm *(1)*
or rm -rf *(1)*
(记不太清了)。这是默认的 Ubuntu shell。
答案1
如果您启用了 ksh 样式的扩展 glob,例如extglob
在 Bash 中设置,则该模式*(1)*
确实会匹配任何文件名。该*(...)
语法匹配括号中部分的零个或多个副本,以及任何前导副本(如果有)。然后*
匹配其余的。
如果您使用的是类似 POSIX 的 shell没有扩展的 glob,那么这将是一个错误,因为该(
运算符不适合那里的语法。
默认情况下,在 zsh 中,我认为这与 相同*1*
,即括号仅用于分组。不过,如果您kshglob
设置了 shell 选项,那么它会使用 ksh 规则。
我认为最近版本的 Ubuntuextglob
在交互式 shell 中默认设置为 Bash。
(1)
要匹配中间有文字部分的文件,请引用或转义该部分或至少括号:要么*\(1\)*
, 要么*"(1)"*
。