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

时间:2011-05-24 11:29:49

标签: regex bash

目录包含.zip.rar个文件以及其他类型的文件。

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

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

3 个答案:

答案 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禁用此行为)