目录包含.zip
和.rar
个文件以及其他类型的文件。
仅列出.rar
和.zip
个文件,ls *.zip *.rar
在bash中,如何将这两种类型与一个正则表达式匹配?
答案 0 :(得分:21)
你真的想要一个正则表达式吗?
这使用*
(“globbing”)和{[...]}
(“brace expansion”)。
$ ls *.{zip,rar}
另请参阅this question了解更多快捷方式。
答案 1 :(得分:11)
使用大括号扩展:
ls *.{zip,rar}
如果您必须使用正则表达式,则可以使用find
:
find -regex ".*\.\(zip\|rar\)"
答案 2 :(得分:4)
在bash中你可以打开特殊的 extglob 选项来使用正则表达式执行此操作:
shopt -s extglob
ls *.*(zip|rar)
这里的优点是它将列出其中一种或两种文件类型,即使不存在。
(与所有shell glob匹配一样,如果没有匹配,模式将直接传递给ls;使用shopt -s failglob
禁用此行为)