在bash中,列出两种类型文件的正则表达式是什么?

gal*_*ath 12 regex bash

目录中包含.zip.rar文件,以及其它类型的文件.

仅列出.rar.zip文件,有ls *.zip *.rar

在bash中,如何将这两种类型与一个正则表达式匹配?

Joh*_*web 22

你真的想要一个正则表达式吗?

这使用*(" globbing ")和{[...]}(" 撑杆扩展 ").

$ ls *.{zip,rar}
Run Code Online (Sandbox Code Playgroud)

对于许多更多快捷方式,请参阅此问题.

  • @galath:不,不是.它被称为"glob表达式". (2认同)

dog*_*ane 12

使用大括号扩展:

ls *.{zip,rar}
Run Code Online (Sandbox Code Playgroud)

如果必须使用正则表达式,则可以使用find:

find -regex ".*\.\(zip\|rar\)"
Run Code Online (Sandbox Code Playgroud)


Phi*_*hil 5

在bash中,您可以打开特殊的extglob选项以使用正则表达式执行此操作:

shopt -s extglob
ls *.*(zip|rar)
Run Code Online (Sandbox Code Playgroud)

这样做的好处是即使没有文件类型,它也会列出其中一种或两种文件类型。

(与所有外壳程序glob匹配一样,如果没有匹配项,该模式将直接传递给ls;使用禁用此行为shopt -s failglob