请问 VS Code 如何查找指定目录下,指定类型文件中是否包含关键字?

2023-11-01 08:35:29 +08:00
 gangsta
比如查找 src 目录下所有的.sql 后缀文件中是否“CREATE TABLE”这一搜索关键词,听起来是一个很常见的需求

1. 通常我是在想要搜索的目录上选择 [在文件夹中查找 / ⌥ + ⇧ + F ] ,但此时 vs code 会自动将该文件夹路径回填到 [包含的文件] 下面的输入框中,没法填写过滤文件类型了 (输入空格+文件类型也不行);

2. 直接输入搜索词,然后 [包含的文件] 输入框中输入“.sql”,此时倒是可以过滤文件类型,但是搜索是针对整个编辑器的 workspace ,速度和效率又不太理想,还要过滤一大堆不相关结果

请问是否有什么设置或者插件可以满足?

2453 次点击
所在节点    Visual Studio Code
25 条回复
ttvv123
2023-11-01 08:38:52 +08:00
为什么一定要 vs code ? everything 之类的工具不挺好?
0toz
2023-11-01 08:41:25 +08:00
在包含的文件输入框内输入:./src/*.sql
这样应该可以把
A3
2023-11-01 08:41:38 +08:00
1 后面加上**/*.sql 试试
dream4ever
2023-11-01 08:43:05 +08:00
用关键词 `vscode find in folder specific file extension` Google 一下就能找到结果。

files to include 那里填 `./target/folder/**/*.sql` 就可以。
daydreamcafe
2023-11-01 08:43:15 +08:00
搜索面板,点击那三个点,展开 search details ,在 file to include 输入框上输入想要过滤的文件 *.sql,*.java 之类的,多个文件就用 csv 的格式
gangsta
2023-11-01 08:59:50 +08:00
@dream4ever 我前几天 Google 到这个结果了但没看明白,请问`./target/folder/**/*.sql` 这个路径里的**个数是和实际的文件路径一致的吗?
考虑到文件目录路径通常会很长,比如“/User/admin/aaa/bbb/ccc/ddd/eee/fff”


@daydreamcafe 请看我的描述,需要自定路径的
296727
2023-11-01 09:05:23 +08:00
296727
2023-11-01 09:05:54 +08:00
为什么我的 imgur 永远不显示图片呢
waiaan
2023-11-01 09:08:51 +08:00
@ttvv123
everything 可以搜索文件内容?怎么配置?
daydreamcafe
2023-11-01 09:10:19 +08:00
@gangsta 比如你想要搜索的文件夹目录是 `src/amodule/bmodule` ,你想要在这个目录下搜索所有的 sql 文件,你已经知道怎么快捷让 vscode 帮你回填这个目录到搜索面板,那就是点击目录选择`find in folder shift+option+F` ,此时会回填这个 `src/amodule/bmodule` 到 `files to include` 这个输入框,你想要过滤特定的文件类型,那就补充一些内容到后面

在你这个场景就是 `src/amoeule/bmodule/**/*.sql`
这里的两个星号 ** 就是匹配任意层目录
shuqin2333
2023-11-01 09:13:33 +08:00
@296727 #8 我也一样,机场节点不行。换个节点偶尔能出来
lysS
2023-11-01 09:20:49 +08:00
不就是 shift f ,再把过滤条件填上不就行了?
yohirowang
2023-11-01 09:37:17 +08:00
这种需求场合我一般用 grepwin
tool2d
2023-11-01 09:46:38 +08:00
@296727 路径要包含.jpg 结尾才行。
darksword21
2023-11-01 09:50:18 +08:00
呃,我用 emacs ,rg 或者 urgrep 应该都可以满足,可以根据 .gitignore 过滤或者动态设置
gam2046
2023-11-01 09:51:30 +08:00
直接左侧的搜索框就行,当然啦,有的时候我是命令行一把梭,就是顺手一敲会比点 UI 更快

find . -type f -name "*-.sql" | xargs grep --color "CREATE TABLE"
dinghmcn
2023-11-01 09:56:15 +08:00
其实,fd 和 rg 都支持 Windows
junjia9917364
2023-11-01 09:57:43 +08:00
VScode 有过滤搜索,搜索框旁边三个点点开,有搜索文件后缀限制,
整个文件夹拖入 VScode ,筛选搜索就好
tool2d
2023-11-01 09:59:54 +08:00
OP 需求很类似基于日志的动态二次排查。

不仅仅是 CREATE TABLE 这一个条件,还需要交互式二次筛选,三次筛选。

类似于 less 命令。
gangsta
2023-11-01 10:23:52 +08:00
@tool2d 我已经把问题尽量简化了,就是指定目录下“只搜索某一种(或几种)指定的文件类型内是否包含”,算是很常见的搜索场景。很多年前写 Java 用 Eclipse ,它的某一些版本中就有类似的功能:输入关键词,指定路径,勾选 file type 。
当然实际的应用场景因人而异,有可能要复杂的多(比如你提到的日志排查,多目录聚合到一个 workspace 下去多条件搜索)。此时可能已无法通过编辑器的 UI 操作去满足了。

上面好几个人的回复都忽略了“指定目录”这个条件,可能是开发时的习惯:只添加较少的几个目录到 workspace ,此时直接在 include 中输入指定后缀名(一个或多个)确实可以实现,但是当项目下的目录和文件够多时就不适合了。
我个人是家中电脑和笔记本的代码采用完全相同的路径,所以干脆连 vscode.code-workspace 也加到 git 中去管理了,相当于有一个很大的 workspace 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/987303

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX