我正在創建一個bash shell腳本,它將重命名文件擴展名而不必指定舊的文件擴展名。如果我在Linux中輸入「change foo *」到終端,它會將所有文件擴展名更改爲foo。重命名文件擴展名而不指定
所以我們可以說我有四個文件:「file1.txt」,「file2.txt.txt」,「file3.txt.txt.txt」和「file4」。
當我運行命令,這些文件應該是這樣的: 「file1.foo」, 「file2.txt.foo」, 「file3.txt.txt.foo」 和 「file4.foo」
有人可以看我的代碼並糾正它。如果有人能爲我實現這一點,我也會很感激。
#!/bin/bash
shift
ext=$1
for file in "[email protected]"
do
cut=`echo $FILE |sed -n '/^[a-Z0-9]*\./p'`
if test "${cut}X" == 'X'; then
new="$file.$ext"
else
new=`echo $file | sed "s/\(.*\)\..*/\1.$ext/"`
fi
mv $file $new
done
exit
你跟例如做什麼'important.files.tar.gz.gpg'(重要文件加密gzip壓縮的tar球)?它會變成'important.foo','important.files.foo','important.files.tar.foo','important.files.tar.gz.foo'或'important.files.tar.gz.gpg .foo'? – 2011-05-20 07:57:49
它應該變成「important.files.tar.gz.foo」。 – 2011-05-20 18:11:46