我試圖使用模式匹配來查找擴展名爲.jpg或jpeg的目錄中的所有文件。Bash模式匹配
ls *.[jJ][pP][eE][gG]
< - 這顯然只會找到.jpeg文件擴展名。問題是,我如何使[eE
可選?
我試圖使用模式匹配來查找擴展名爲.jpg或jpeg的目錄中的所有文件。Bash模式匹配
ls *.[jJ][pP][eE][gG]
< - 這顯然只會找到.jpeg文件擴展名。問題是,我如何使[eE
可選?
比較難。
ls *.[jJ][pP]{[eE],}[gG]
除了標準的(簡單)glob模式時,bash≥4.0已擴展通配。
這是off by default。要打開它,請使用:shopt -s extglob
使用extglob
您可以訪問擴展正則表達式模式以及標準模式。此外,在您的特定情況下,您可以通過啓用case insensitive glob來進一步調整您的glob的行爲,默認情況下此功能也處於關閉狀態。要打開它,請使用:shopt -s nocaseglob
啓用extglob
不會改變標準球體的工作方式。你可以混合使用這兩種形式。唯一的問題是你必須知道特殊的擴展正則表達式語法。例如,在下面的例子中,擴展正則表達式的唯一部分是?(e)
。其餘部分是標準全局擴展,啓用了不區分大小寫。
擴展的正則表達式,不區分大小寫的水珠您的具體情況是:
shopt -s extglob nocaseglob
ls -l *.jp?(e)g
你可以找到更多信息和示例:Bash Extended Globbing。
實際上,Bash在bash-2.02-alpha1(即_long_前 - 像15年)中得到了延長的globbing。當'。/ configure'運行時(即編譯之前),可以選擇是否默認打開或關閉。實際上,它所介紹的版本顯示在您爲其默認設置提供的鏈接中。 –
非常感謝,那就是我一直在尋找的:) – Elliot