3 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超13個贊
如果使用bash,則不需要sed,basename,rename,expr等外部命令。
for file in *.html
do
mv "$file" "${file%.html}.txt"
done

TA貢獻(xiàn)1786條經(jīng)驗 獲得超13個贊
這在OSX上對我有效,從.txt到.txt_bak
find . -name '*.txt' -exec sh -c 'mv "$0" "${0%.txt}.txt_bak"' {} \;

TA貢獻(xiàn)2080條經(jīng)驗 獲得超4個贊
要獲得更好的解決方案(僅具有bash功能,而不是外部調(diào)用),請參閱其他答案之一。
以下將執(zhí)行且不需要系統(tǒng)具有rename程序(盡管您通常會在系統(tǒng)上擁有該程序):
for file in *.html; do
mv "$file" "$(basename "$file" .html).txt"
done
編輯:正如評論中指出的那樣,這對于沒有正確引用(現(xiàn)在已在上面添加)的文件名中不帶空格的文件不起作用。當(dāng)純粹在自己的文件上工作(您知道文件名中沒有空格)時,這將起作用,但是只要您編寫以后可以重用的文件,就不要跳過正確的引用。
添加回答
舉報