為了打造一個好的檔案管理系統,我看了一大堆網路上的影片跟分享,都還是研究不出個所以然。
這個問題困擾了我好幾年,直到我遇到了終端機。
以前的困擾
以音樂為例,除了自己的專案以外,我通常也會存各種流行歌的音檔跟譜來學習。檔案內容包含音檔、各種樂器的譜,例如:
- 鼓譜
- 貝斯譜
- 電吉他譜
- 和弦譜
- 弦樂譜
以下是我試過的分類方式以及各自的問題:
- 用樂器來分資料夾:鼓譜、貝斯譜、吉他譜。
- 問題:如果一首歌有多個樂器譜,散落在不同資料夾很不直觀。
- 用音樂語言分資料夾:中文歌、日文歌、英文歌。
- 問題:一個資料夾可能會有一大堆譜,這樣檔案命名是要把歌手還是歌名放最前面?
還有其他的困擾:
- 如果這首歌有很多種版本,檔案應該怎麼命名?
- 如果檔名太長,找檔案的時候根本看不到關鍵字。
- 如果現在的管理系統不好用,要換新的就得砍掉重練。
不過這些問題其實都可以歸咎於一個根本問題:
「Mac 的 Finder 的搜尋,不知道為什麼總是找不到我想要的檔案。」
就是因為我沒辦法用搜尋找到檔案,所以我才得花時間打造完美的檔案管理系統。
因此,如果我有辦法透過其他搜尋方式找到檔案,是不是我根本就不需要有這些麻煩了?
於是我寫了一個 Function 來解決這個問題,我把它命名為 ff (find file)
。
終端機解決方法
用法很簡單:我在終端機輸入 ff <關鍵字>
,程式就會馬上幫我找到有哪些檔名包含這個關鍵字,我還可以從這些結果中再繼續搜尋。
選到檔案之後,有幾種操作選項:
- 按
v
用Neovim
打開(我的主要編輯器) - 按
r
用ranger
打開(終端機的檔案管理介面) - 按
o
用作業系統預設程式打開(open) - 按
f
用finder
打開 - 按
b
回到剛剛的搜尋介面重新選擇(back) - 按
q
離開(quit)
現在,所有流行歌的音檔跟譜,我可以全部都放在同一個大資料夾。
以後要打開某個檔案,我就在終端機輸入 ff <song-name>
,然後在 fzf
視窗裡面輸入 bass
,不到五秒鐘就能打開我想要看的貝斯譜了。
Function 的運作
簡單來說,它的流程是:
整個 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
}
如果你有推薦什麼檔案管理系統,或是更好用的終端機工具,歡迎在下面留言分享給我!