正如標題所說,我正在尋找一個命令/工具 - 最好是從終端運行的東西(我在遠端伺服器上使用 Ubuntu),它可以一次替換多個目錄的特定部分。資料夾結構是這樣的:
Example.of.Structure[app]
Another.Example[app]
Third.Example.of.Structure[app]
我想重命名所有資料夾,因此 [app] 部分將從資料夾名稱中刪除。
我嘗試過使用基本的正規表示式。匹配方括號及其內部的文字。
當我使用它時,這似乎運作得很好“找到它”- 但我真的不確定如何將其放入命令中。
我想出的用於查找括號內的文字(包括括號本身)的正規表示式是:\[\w+\]
但我如何將其放入命令中?
謝謝。
答案1
您實際上並不需要正規表示式。一個簡單的 shell glob 加上參數擴充就可以做到這一點:
$ for f in *\[*\]/; do echo mv "${f}" "${f/\[*\]}"; done
mv Another.Example[app]/ Another.Example/
mv Example.of.Structure[app]/ Example.of.Structure/
mv Third.Example.of.Structure[app]/ Third.Example.of.Structure/
(echo
一旦您確信建議的替代品是正確的,請刪除)。
如果您想使用基於 regex 的工具,那麼基於 perl 的工具rename/prename
是顯而易見的選擇:
$ rename -n 's/\[\w+\]//' */
rename(Another.Example[app]/, Another.Example/)
rename(Example.of.Structure[app]/, Example.of.Structure/)
rename(Third.Example.of.Structure[app]/, Third.Example.of.Structure/)
(-n
一旦您確信建議的替代品是正確的,請刪除)。
這兩個都符合第一的模式的出現。如果該模式有可能[app]
出現在其他地方,請考慮將匹配錨定到模式的末端。看字串開始和字串結束錨點