Shell
我們如何重命名帶有分號的文件作為文件名的一部分?
我試圖將所有副檔名為“XLS;1”的文件重命名為“XLS”,但它不起作用。
我在 windows xp 的 cygwin 中嘗試了以下操作,但它們不起作用:
mv *.XLS;1 *.XLS mv *.XLS\;1 *.XLS mv "*.XLS;1" *.XLS
問題不在於分號,您的第二個範例會解決這個問題。問題是 Linux/Unix 實用程序(以及擴展的 Cygwin)並沒有像我理解的 Windows 那樣將該指令表示為“移動所有
.XLS;1
以. 結尾的文件”。.XLS
您需要單獨移動每個文件:for file in *.XLS\;1; do mv "$file" "${file%;1}" done
一個解釋:
這會將所有以 結尾的文件
.XLS;1
一次儲存到一個名為$file
. 對於每個文件,我們告訴它$file
通過;1
切掉$file
.注意對於那些使用 zsh 的人,有一個很好的實用程序叫做
zmv
:zmv '(*).XLS;1" "$1.XLS"
根據您的設置,您可能需要先執行
autoload zmv
(也將其放入 .zshrc 中)。