IFS=$'\r\n' GLOBIGNORE='*' command eval 'student_ids=($(cat student_id))'
cat
指令讀取 student_id.txt
中所有行並儲存在一個數組中。mkdir -p compressed_files/xxx
zip、tar、rar
和 unknown
目錄。for file in compressed_files/*; do
:循環遍歷 compressed_files
目錄中的所有文件和文件夾。ext=${file##*.}
:獲取檔案格式名稱,使用 ${file##*.}
取得最後一個句點之後的所有內容。if [[ "$ext" =~ ^(zip|tar|rar|gz)$ ]] && [[ -s "$file" ]]; then
:如果文件是壓縮檔案且不為空,則繼續執行操作。id=$(echo "$file" | grep -oE '[a-zA-Z][0-9]+')
:提取文件名中的學生 ID
,使用 grep
命令查找由一個英文字母和一個或多個數字組成的模式。if ! [[ " ${student_ids[@]} " =~ " $id " ]]; then
:檢查學生 ID 是否存在於 student_id
文件中,如果不存在,則將其添加到 missing_list.txt
文件中。case "$ext" in ...
:使用 case
語句處理不同的文件類型,將三種不同類型壓縮檔案格式解壓縮rm "$file"
:刪除原始檔案。elif [[ "$ext" != "zip" && "$ext" != "tar" && "$ext" != "rar" && "$ext" != "gz" ]]; then
:如果文件不是 zip、tar、rar
或 gz
,則繼續執行操作。if [[ -d "$file" ]]; then
:檢查文件是否是目錄,如果是的話就跳過,避免資料夾被移進去unknown
目錄。ID
寫入 wrong_list.txt
,並將檔案移入unknown
目錄。打開終端機或命令列界面。
輸入cd命令,進入存放Bash腳本的目錄。
輸入以下命令,使Bash腳本具有執行權限(script_name.sh是Bash腳本檔案名稱):
輸入以下命令運行Bash腳本:
等待 bash
跑完,檔案就會依照不同壓縮檔案格式解壓縮並放入個別的資料夾內,並將上傳錯誤的學生ID
,以及為上傳檔案的學生分別記錄在 txt
文件中。