感謝搞亂了我的第一次嘗試這樣做,我現在有一個目錄充滿了現在命名爲這樣的文件:刪除所有文件的多個擴展
valery-special-music-poetry.txt.mtxt.md.md.txt.mtxt.md.md.md
我需要命名爲:
valery-special-music-poetry.md
我該如何從命令行執行此操作?
我運行:GNU的bash,版本3.2.48(1)-release下(x86_64-蘋果darwin12)
感謝搞亂了我的第一次嘗試這樣做,我現在有一個目錄充滿了現在命名爲這樣的文件:刪除所有文件的多個擴展
valery-special-music-poetry.txt.mtxt.md.md.txt.mtxt.md.md.md
我需要命名爲:
valery-special-music-poetry.md
我該如何從命令行執行此操作?
我運行:GNU的bash,版本3.2.48(1)-release下(x86_64-蘋果darwin12)
這可能會幫助你
#!/bin/bash
for filename in *
do
x=`echo $filename | sed 's/\..*\./\./g'`
mv $filename $x
done
保存這一個文件所謂rename.sh
chmod +x rename.sh
./rename.sh
ls -1 *.txt.mtxt.md.md.txt.mtxt.md.md.md | nawk -F"." '{cmd="mv "$0" "$1".md";system(cmd)}'
我覺得awk -vFS =「.txt」會更安全 – MeaCulpa
for file in *; do mv "$file" "${file/.*./.}"; done
免責聲明:與往常一樣,如果您的文件名包含空格,則會導致問題。有關解決方法,請參閱http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html。 – user123444555621
殼牌本身:
for i in *; do mv "$i" "${i%%.*}.${i##*.}"; done
除非你的目錄是單層,否則我建議使用find,如果你有蘋果。
謝謝你做到了! – Chris
歡迎您隨時:) – Konza