這學期擔任計算機程式助教,負責出作業與批改作業。儘管作業已經要求同學把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