我尝试过这样的事情
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
,换句话说,文件名
答案1
如果你确实必须使用,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"