2012-11-05 18 views
0

感謝搞亂了我的第一次嘗試這樣做,我現在有一個目錄充滿了現在命名爲這樣的文件:刪除所有文件的多個擴展

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)

回答

2

這可能會幫助你

#!/bin/bash 
for filename in * 
do 
    x=`echo $filename | sed 's/\..*\./\./g'` 
    mv $filename $x 
done 

保存這一個文件所謂rename.sh

chmod +x rename.sh 
./rename.sh 
+0

謝謝你做到了! – Chris

+0

歡迎您隨時:) – Konza

0
ls -1 *.txt.mtxt.md.md.txt.mtxt.md.md.md | nawk -F"." '{cmd="mv "$0" "$1".md";system(cmd)}' 
+0

我覺得awk -vFS =「.txt」會更安全 – MeaCulpa

3
for file in *; do mv "$file" "${file/.*./.}"; done 
+0

免責聲明:與往常一樣,如果您的文件名包含空格,則會導致問題。有關解決方法,請參閱http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html。 – user123444555621

2

殼牌本身:

for i in *; do mv "$i" "${i%%.*}.${i##*.}"; done 

除非你的目錄是單層,否則我建議使用find,如果你有蘋果。

相關問題