我偶然發現了Bash的「擴展模式」extglob。 http://wiki.bash-hackers.org/syntax/pattern在Bash擴展模式下逃跑@(..)
我們正在調查這種情況下:
想象一下這樣的目錄結構:
/basedir/2017/02/26/uniquedirs1/files.log
/basedir/2017/02/27/uniquedirs2/files.log
/basedir/2017/02/28/uniquedirs3/files.log
/basedir/2017/03/01/uniquedirs4/files.log
/basedir/2017/03/02/uniquedirs5/files.log
如果我想列出目錄2017/02/27
和2017/02/28
我可以簡單的寫的文件:
ls /basedir/2017/02/@("27"|"28")/*/files.log
太棒了! \ o/
現在的問題。我如何在Bash擴展模式中定義多個目錄?
這不起作用:
ls /basedir/2017/@("02/28"|"03/01")/*/files.log
ls /basedir/2017/@("02\/28"|"03\/01")/*/files.log
有什麼辦法可以定義「擴展模式」的多個目錄?
儘管大括號擴展的唯一問題是我無法動態定義範圍。 – Asgair
你也不能使用擴展模式,所以你不會丟失任何東西:) – chepner
好的。這是一種恥辱......我仍然沒有接近有效的解決方案。我遇到的唯一問題是無法動態定義括號擴展。像'var1 =「02/28,03/01」ls/basedir/2017 /「$ var1」/ */files.log',除非我在子shell中執行它。但是這樣做:'var2 =「27 | 28」ls/basedir/2017/02/@(「$ var2」)/ */files.log' – Asgair