Bash
Bash Globbing 變數替換?
可能重複:
我想使用現有名稱重命名文件作為新名稱的基礎。
所以如果我可以
ls
用這些文件ls blue*+(.png)
我想將它們重命名為
mv blue$(*)+(.png) $(1).png
除了這顯然不起作用。bash globbing 中是否有此類變數的語法,或者是否有更簡單的方法?
便攜的方法是
for f in blue*.png; do mv -- "$f" "${f#blue}"; done
所有這些都需要
mv
並且不僅適用於任何支持標準 POSIX 參數擴展bash
的POSIX 兼容 shell 。您的系統無需安裝或安裝特定版本。zsh``rename
我看不到在 bash 中執行此操作的任何簡單方法,但當然您可以將問題分解為幾個步驟,例如剪切前綴、記住副檔名,然後用單個實例替換副檔名的多個實例。
for file in blue*+(.png); do tmp="${file#blue}"; extension="${file##*.}"; echo "$file" "${tmp/%+(.$extension)/}.$extension";done
如果您對結果滿意,只需鍵入…
^echo^mv
所有的魔法都會發生。:)