Bash
有沒有辦法讓 find 使用 shell 的 extglob shell 選項?
簡而言之,我本能地寫了一個這樣的命令來查找這兩個文件
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。