**已关闭。**此问题为not about programming or software development。目前不接受回答。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
5天前关闭。
Improve this question的
ls [!str].
这个命令应该显示和文件不以s t或r开头,任何扩展名,但它没有这样做.我是macbook pro终端.我重新检查,但它仍然不工作.这里出了什么问题?将感谢指出谢谢
2条答案
按热度按时间bvn4nwqk1#
命令行shell通常不使用正则表达式,而是使用更简单的globs。
[!str].
匹配除s
、t
或r
之外的任何字符,后跟一个点。要说任何东西都可以在点之前和之后,请添加以下内容:
字符串
uklbhaso2#
[!str]似乎试图使用正则表达式。在它出现的上下文中,它是无效的,不返回任何内容。ls正在查找名为[!str]的文件,但没有文件,因此它不返回任何内容。
混淆来自文件globbing和正则表达式之间的相似性。这是两个非常不同的东西,具有不同的语法和功能。与正则表达式相比,文件globbing是有限的。
为了得到您想要的结果,可以使用sed或grep正则表达式过滤掉以s、t或r开头的文件。
LS-1| grep -ve“^[str]”
find命令还具有正则表达式功能:
/ -maxdepth 1 -name [!str]*