終端機解決了我的檔案管理系統困擾(fd + fzf)

為了打造一個好的檔案管理系統,我看了一大堆網路上的影片跟分享,都還是研究不出個所以然。

這個問題困擾了我好幾年,直到我遇到了終端機。

以前的困擾

以音樂為例,除了自己的專案以外,我通常也會存各種流行歌的音檔跟譜來學習。檔案內容包含音檔、各種樂器的譜,例如:

  • 鼓譜
  • 貝斯譜
  • 電吉他譜
  • 和弦譜
  • 弦樂譜

以下是我試過的分類方式以及各自的問題:

  • 用樂器來分資料夾:鼓譜、貝斯譜、吉他譜。
    • 問題:如果一首歌有多個樂器譜,散落在不同資料夾很不直觀。
  • 用音樂語言分資料夾:中文歌、日文歌、英文歌。
    • 問題:一個資料夾可能會有一大堆譜,這樣檔案命名是要把歌手還是歌名放最前面?

還有其他的困擾:

  • 如果這首歌有很多種版本,檔案應該怎麼命名?
  • 如果檔名太長,找檔案的時候根本看不到關鍵字。
  • 如果現在的管理系統不好用,要換新的就得砍掉重練。

不過這些問題其實都可以歸咎於一個根本問題:

Mac 的 Finder 的搜尋,不知道為什麼總是找不到我想要的檔案。

就是因為我沒辦法用搜尋找到檔案,所以我才得花時間打造完美的檔案管理系統。

因此,如果我有辦法透過其他搜尋方式找到檔案,是不是我根本就不需要有這些麻煩了?

於是我寫了一個 Function 來解決這個問題,我把它命名為 ff (find file)

終端機解決方法

用法很簡單:我在終端機輸入 ff <關鍵字>,程式就會馬上幫我找到有哪些檔名包含這個關鍵字,我還可以從這些結果中再繼續搜尋。

選到檔案之後,有幾種操作選項:

  1. vNeovim 打開(我的主要編輯器
  2. rranger 打開(終端機的檔案管理介面)
  3. o 用作業系統預設程式打開(open)
  4. ffinder 打開
  5. b 回到剛剛的搜尋介面重新選擇(back)
  6. q 離開(quit)

現在,所有流行歌的音檔跟譜,我可以全部都放在同一個大資料夾。

以後要打開某個檔案,我就在終端機輸入 ff <song-name>,然後在 fzf 視窗裡面輸入 bass,不到五秒鐘就能打開我想要看的貝斯譜了。

Function 的運作

簡單來說,它的流程是:

  1. 使用 fd 找出所有符合的檔案
  2. 把符合的檔案丟到 fzf 視窗方便使用者選擇
  3. 選擇了檔案之後看要用哪種方式打開

整個 Function 長這樣:

ff() {
  while true; do
    local file
    file=$(fd "$1" ~ \
      --exclude Library \
      --exclude .Trash \
      --exclude .npm \
      --exclude .cache \
      --exclude .git \
      --exclude node_modules \
      --exclude .config \
      --exclude Applications \
      | fzf --preview 'bat --style=numbers --color=always {} || cat {}' --exit-0) || return

    [[ -z "$file" ]] && return

    echo "🔍 Selected: $file"

    while true; do
      echo "👉 Action: [v]im, [r]anger, [o]pen (macOS), [f]inder, [b]ack, [q]uit"
      read -k1 -s action
      echo

      case "$action" in
        v) nvim "$file"; return ;;
        r) ranger --selectfile="$file"; return ;;
        o) open "$file"; return ;;
        f) open -R "$file"; return ;; # Open in finder
        b) break ;; # Back to fzf
        q) log error "Quit."; return ;;
        *) log error "Unknown action, try again." ;;
      esac
    done
  done
}

如果你有推薦什麼檔案管理系統,或是更好用的終端機工具,歡迎在下面留言分享給我!

較新一篇 浮誇的卡片禮物
較舊一篇 我們在追求的快樂,或許只是大腦的化學物質
使用 Hugo 建立
主題 StackJimmy 設計