Linux
正則表達式以擷取具有特定結構的文件夾名稱
用這種結構擷取文件夾名稱的正則表達式是什麼
xxxx-x ( x - 整數 )
ls /usr/hdp | ..... 2.6.0.3-8 current HG_MASTER 2.4.3 34.1 45-995
預期產出
2.6.0.3-8 ls -lh /usr/hdp/ total 8.0K drwxr-xr-x. 27 root root 4.0K Jan 1 15:24 2.6.0.3-8
由於您標記了bash,您實際上可以使用擴展的 glob 通過 shell 的文件名匹配來做到這一點:
$ shopt -s extglob $ touch /some/path/{2.6.0.3-8,22.66.0.333-8,foobar} $ printf "%s\n" /some/path/+([0-9]).+([0-9]).+([0-9]).+([0-9])-+([0-9]) /some/path/22.66.0.333-8 /some/path/2.6.0.3-8
那裡的模式就像更常見的東西,比如
*
or*.png
,所以你可以把固定的部分像路徑一樣粘在裡面。添加尾部斜杠/
以僅匹配目錄。(不過,斜線也確實出現在輸出中。)在 ERE 正則表達式中,模式與
[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-[0-9]+
. 更模糊的版本只會檢查允許的字元,例如+([-.0-9])
(或[-.0-9]+
在 ERE 中),但當然也會匹配例如123..456
.如果您只想列印文件名,
find
可能會更容易,但如果您想對它們執行命令,那麼 shell 循環也是一個選項(連同find -exec
)。