繁体   English   中英

在Sublime Text 2中搜索包含“Mickey”但不包含“Mouse”的文件

[英]Search Sublime Text 2 for files that contain 'Mickey' but do not contain 'Mouse'

是否可以在Sublime Text 2中搜索包含'Mickey'文件

但不要包含'Mouse'

正则表达式可能? 但他们会是什么?

是的,您可以使用正则表达式来执行此操作,使用负前瞻表达式

打开搜索Ctrl-Shift-F

确保使用正则表达式Alt-R

Mickey(?! Mouse)

将返回所有未跟随“ Mouse ”的“ Mickey ”实例

注意确保在 Mouse 前包含空格

你使用这个特定的文本编辑器真的很重要吗? 就个人而言,我只是使用grep来做。 就像是:

grep -l Mickey filename | xargs grep -L Mouse

说明:

-l选项表示“打印包含匹配的文件名,而不是匹配的行”。

xargs将这些匹配的文件名传递给下一个grep命令。

-L选项表示“打印不包含匹配项的文件名,而不是匹配的行”。

然后,您可以同时在多个文件上运行此命令 - 可能通过向第一个grep添加-r(“递归”)选项。

我尝试了Smandoli提供的正则表达式,但实际上它已经Smandoli Sublime Text 2

也许这是我添加的Sublime插件之一的问题,我根本就不知道。

我想使用Sublime进行搜索的原因是我正在开发一个包含超过一千个文件的相当大的项目。 所以我想在项目中搜索包含特定字符串('Mickey')的文件。 如有必要,编辑文件并添加单词Mouse。 然后我可以“刷新”搜索,现在将省略我刚刚编辑的文件,因为它不再符合搜索条件。 这是一个合理的工作流程。

    Note: The strings are not actually Mickey and Mouse, I just used those to illustrate 
the problem. I don't work for Disney :)

因为Smandoli提供的regex崩溃Sublime我也尝试了Tom Lord提供的grep命令(我在Windows 7上运行)但是看不到只能定位具有特定扩展名的文件的方法( *.asp

最后我写了一个小的Powershell脚本,似乎可以解决这个问题:

Get-ChildItem -recurse | Where-Object {$_.FullName -like "*.asp"}
    ForEach-Object { if( ( $(Get-Content $_) |
                            select-string -pattern "Mickey") )
                     { $_.PsPath }} | Get-ChildItem |
    ForEach-Object { if( !( $(Get-Content $_) |
                            select-string -pattern "Mouse") )
                     { $_.PsPath }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM