Last active
September 13, 2025 05:53
-
-
Save YuanLiou/9473746f64299e870ac3aad82b345b45 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # --- 設定區 --- | |
| # 目標資料夾就是目前的資料夾 | |
| TARGET_DIR="$(pwd)" | |
| # --- 執行區 --- | |
| SCRIPT_NAME="$(basename "$0")" | |
| echo "--- 開始整理資料夾: $TARGET_DIR ---" | |
| # 步驟 1: 預先建立好分類用的資料夾 | |
| # -p 參數: 如果資料夾已存在不會報錯,且會建立必要的父目錄 | |
| mkdir -p "$TARGET_DIR/圖片" | |
| mkdir -p "$TARGET_DIR/文件" | |
| mkdir -p "$TARGET_DIR/壓縮檔" | |
| mkdir -p "$TARGET_DIR/影片" | |
| mkdir -p "$TARGET_DIR/其他檔案" | |
| # 步驟 2: 使用 for 迴圈遍歷目標資料夾中的每一個項目 | |
| # "$TARGET_DIR"/* 會展開成該資料夾下的所有檔案與資料夾名稱 | |
| # 這裡不用 ls,是因為 shell 的 for 迴圈可以直接用萬用字元展開(globbing)取得所有檔案與資料夾 | |
| for file in "$TARGET_DIR"/* | |
| do | |
| # 步驟 3: 判斷目前處理的項目是否為一個 "檔案" (-f) | |
| # 這樣可以避免我們移動到資料夾 | |
| if [[ -f "$file" ]]; then | |
| # 步驟 4: 使用 case 判斷式,根據檔案名稱 (副檔名) 決定要移到哪裡 | |
| case "$file" in | |
| *.jpg|*.png|*.gif) | |
| echo "移動圖片檔案: $file" | |
| mv "$file" "$TARGET_DIR/圖片/" | |
| ;; | |
| *.pdf|*.docx|*.txt) | |
| echo "移動文件檔案: $file" | |
| mv "$file" "$TARGET_DIR/文件/" | |
| ;; | |
| *.zip|*.rar|*.gz) | |
| echo "移動壓縮檔案: $file" | |
| mv "$file" "$TARGET_DIR/壓縮檔/" | |
| ;; | |
| *.mp4) | |
| echo "移動影片檔案: $file" | |
| mv "$file" "$TARGET_DIR/影片/" | |
| ;; | |
| *) # `*` 代表除了上述條件以外的所有情況 | |
| # 我們把整理腳本自己也排除掉,避免它把自己移動了 | |
| if [[ "$(basename "$file")" != "$SCRIPT_NAME" ]]; then | |
| echo "移動其他檔案: $file" | |
| mv "$file" "$TARGET_DIR/其他檔案/" | |
| fi | |
| ;; | |
| esac | |
| fi | |
| done | |
| echo "--- ✅ 檔案整理完成! ---" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment