這學期擔任計算機程式助教,負責出作業與批改作業。儘管作業已經要求同學把code打包成zip格式繳交,但還是有不少同學會上傳錯誤格式,造成批改時的困擾...於是乎要寫個程式來做區別,順便對繳交錯誤格式的同學扣分XD


  • 可對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