Bash

有沒有辦法讓 find 使用 shell 的 extglob shell 選項?

  • January 21, 2022

簡而言之,我本能地寫了一個這樣的命令來查找這兩個文件prefix.ext並向prefix_suffix.ext下層級

find /some/path -type f -name 'prefix?(_suffix).zip'

但它不起作用。

因為man find, under-name patter將模式稱為“shell 模式”,所以我在徘徊是否可以控制應該使用哪種模式,特別是是否extglob可以使用選項。

find僅使用“基本”外殼模式,如 POSIX 中所述。它不支持extglob-style glob(儘管 GNU 實現說它使用fnmatch,並且GNU C 庫的實現fnmatch支持擴展模式)。

如果您使用的是 GNU find,則可以使用正則表達式進行過濾;有關詳細資訊,請參閱文件的相關部分

-regex '.*/prefix\(_suffix\)?\.zip'

使用預設的正則表達式類型,或

-regextype posix-extended -regex '.*/prefix(_suffix)?\.zip'

與 ERE。

引用自:https://unix.stackexchange.com/questions/687325