這學期擔任計算機程式助教,負責出作業與批改作業。儘管作業已經要求同學把 Code 打包成 Zip 格式繳交,但還是有不少同學會上傳錯誤格式,造成批改時的困擾…
於是乎要寫個程式來做區別,順便對繳交錯誤格式的同學扣分
- 可對 rar, zip ,7z 解壓,要安裝一下相關程式
- 輸入資料夾:zip
- 輸出資料夾:output
- 從 Ceiba下載下來的壓縮檔名稱長這樣:hw143528_b019011XX_8779f7c4d2028af_1.zip
- 輸出資料夾下的目錄會依學號命名:b019011XX
- 可區別檔案交錯,例如沒有壓縮或是交成文字檔
#!/bin/bash
count=0
input_dir=zip
output_dir=output
# create dir file
mkdir $output_dir
#remove old files
rm -R $output_dir/*
#decompressing
for file in $input_dir/*
do
#get filename
filetype[$count]=${file#*.}
t=${file#*_}
id[$count]=${t%_*_*}
#decompress under different type
case ${file#*.} in
"zip")
echo -e "unzip ${t%_*_*}"
unzip -j $file -d $output_dir/${t%_*_*} 1>> /dev/null
;;
"rar")
echo -e "unrar ${t%_*_*}"
rar e $file $output_dir/${t%_*_*}/ 1>> /dev/null
;;
"7z")
echo -e "un7z ${t%_*_*}"
7z e zip/$file -o $output_dir/${t%_*_*}/ 1>> /dev/null
;;
"cpp")
echo "wrong_cpp ${t%_*_*}"
;;
"c")
echo "wrong_c ${t%_*_*}"
;;
"txt")
echo "wrong_txt ${t%_*_*}"
;;
*)
echo "unknown ${t%_*_*}"
continue
;;
esac
count=$[$count+1]
done
count=$[$count+1]
# display result
echo total number = $count
exit 0