Find
查找一組字元出現 N 次的目錄名稱
如何匹配包含 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
?
regex
GNU的預設類型find
是emacs
,它不支持間隔。您可以指定不同的正則表達式類型,例如posix-egrep
,這將解決您的問題:find . -maxdepth 1 -type d -regextype posix-egrep -regex './[0-9]{6}'