Find

查找一組字元出現 N 次的目錄名稱

  • December 16, 2018

如何匹配包含 N 次出現的字元子集的非遞歸目錄名稱(使用find)?

在我的具體情況下,我只想要 6 位數字的目錄名稱。這是有效但不具體的方法(它會給我所有帶數字的目錄名稱):

find . -maxdepth 1 -type d -regex './[0-9]+'
ls -d +([0-9])

這也有效,但給了我以數字開頭併後跟任何內容的目錄名稱:

find . -maxdepth 1 -type d -name '[0-9]*'

根據我的閱讀,我不知道如何ls匹配 N 次,因為它使用 glob 而不是正則表達式(而且我對 glob 一無所知)。我無法理解的是,這些都不是使用find

find . -maxdepth 1 -type d -regex './[0-9]{6}'
find . -maxdepth 1 -type d -name '[0-9]{6}'
find . -maxdepth 1 -type d -name '[0-9]+'

我已經使用了很多次正則表達式,但我不明白我的模式有什麼問題(我也很驚訝我不得不用 指定./-regex

regexGNU的預設類型findemacs,它不支持間隔。您可以指定不同的正則表達式類型,例如posix-egrep,這將解決您的問題:

find . -maxdepth 1 -type d -regextype posix-egrep -regex './[0-9]{6}'

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