使用 fzf 从树中获取字段

使用 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,换句话说,文件名

答案1

如果你确实必须使用,tree那么你应该使用双引号tree -CQQ引用文件名。
所以输出将变为:

└── "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"

相关内容