Bash
使用 fzf 從樹中獲取欄位
我試過這樣的東西
tree -C | fzf --ansi | awk -F'|' '{print $NF}'
├── repo.git/ │ ├── folder/ │ │ ├── subfolder/ │ │ │ ├── output.0 │ │ │ └── traces.1 │ │ ├── subfolder/ │ │ │ └── fold/ │ │ │ └── subtree/ │ │ │ ├── .gitignore │ │ │ ├── stamp-h1 item │ │ │ └── stamp-h2
我想搶
stamp-h1 item
,換句話說就是文件名
如果您真的必須使用,
tree
那麼您應該使用tree -CQ
雙Q
引號將文件名引號括起來。所以樹的輸出會變成:
└── "repo.git" └── "folder" ├── "subfolder" │ ├── "output.0" │ └── "traces.1" └── "subfolder2" └── "fold" └── "subtree" ├── "stamp-h1 item" └── "stamp-h2"
對於獲取文件名,您可以應用正則表達式,
sed
用於僅獲取" "
. 所以你的程式碼應該是這樣的:tree -CQ | fzf --ansi | sed 's/.*\"\(.*\)\"/\1/g'
使用上面的程式碼,如果您選擇
repo.git
,您將獲得:repo.git
如果您選擇“stamp-h1 item”,您將獲得:
stamp-h1 item
或者如果你想列印
"
你應該使用的值:tree -CQ | fzf --ansi | sed 's/.*\"\(.*\)\"/"\1"/g' #Example output: "stamp-h1 item"