如何在Windows 7中搜索文件并排除子文件夹?


Answers:


22

执行此操作的一种方法(在Windows 7中)是使用-folder:和来丢弃所有子文件夹\*(例如,当在downloads文件夹中搜索.zip文件时):

*.zip -folder:"Downloads\*"


就这样。


3
或推广到任何当前目录:*.zip -folder:".\*"
protongun 2014年

1
NVM,以上无法正常工作。也许有人可以提供更正?
protongun

* .zip -folder:“。\ *”也直接排除当前(以及子目录)。上面的示例仅在“下载”是当前直接工作的情况下才正确排除所有子目录。
ashtonium

1
@Xzila多亏了斜杠,让我举一个简单的例子,如果我们有文件“ foo.zip”,它的文件夹是什么?它的文件夹是“ C:\ Downloads”,而不是“ C:\ Downloads \”,因此当您执行“ -folder:” Downloads \ *“时,它与后一个匹配,但与前一个不匹配,实际上仅排除了子目录
Ivan Castellanos

1
对于unix / Linux用户,请仔细考虑,“-folder:”排除了匹配的文件夹,否定了“ folder:”子句。从find命令泄漏的语义过载再次发生。
BenPen

6

为了不搜索子文件夹,请在搜索窗口中单击“组织”(左上角),然后选择选项“文件夹和搜索选项”。在该窗口中,选择“搜索”标签。取消选择“在搜索结果中包括子文件夹...”选项即可解决问题!


1
那不会成功。那是资源管理器中一个烂得很明显的危险错误。认为搜索-> Ctrl-A->删除。总是从资源管理器搜索框中搜索子文件夹。

1
尼克绝对是错的。在Windows 7中,这可行。
RD

6
对于临时搜索/临时搜索,这是永久性的更改,执行此操作没有任何意义。
伊万·卡斯泰拉诺斯

5

-folder:(name_of_subfolder) 将从搜索结果中排除“ name_of_subfolder”。

在Microsoft网站上,请参阅“ 高级查询语法”以获取更多选项(其中一些可能已过时),以及有关在Windows中使用较新语法(例如)进行搜索的“高级提示”System.Kind:<>picture,但似乎不够完整。


正是我想要的这种参数!
NiteCyper 2014年

1
@NiteCyper,它在Windows 7中对您有用吗?(我不在Windows上,但似乎参数已过时?请参见我添加到答案中的链接。)
Arjan 2014年

对于未来的读者:似乎System.FileName 还可以匹配目录名称,因此也许System.FileName<>name_of_subfolder可以。另外,System.Kind可能允许System.Kind:<>folder排除所有文件夹(或与System.FileName特定文件夹结合使用时?)。似乎有人可能会在搜索中使用这一长列表。(但是:我没有使用Windows。)
Arjan 2014年

@Arjan是的,我使用Windows7。Windows7似乎已自动删除了冒号。
NiteCyper 2014年

4

忽略folders (而不是包含的文件),然后尝试:

System.Kind:<>folder

3
这适用于Windows 10
Matthew

2

* .zip文件夹:“ \ MyFolder”

必须从父文件夹运行该目录以搜索MyFolder,但不能搜索MyFolder的子文件夹或同级文件夹。似乎需要双引号和反斜杠。我在Windows 7上对此进行了测试,并且可以正常工作。我在这里找到了这个答案:answers.microsoft.com:如何不搜索子目录

虽然我发现另一个答案中的“排除文件夹”选项可行(谢谢),但如果要排除的子文件夹很多,则此选项可能会更容易。


在Windows 8上,我也可以从要搜索的目录中运行它。例如,在中C:\foo*.zip folder:"\foo"在搜索框中输入。感谢您的信息和链接!
cxw

0

我在Windows 10计算机上,但是我怀疑情况是否已更改。如果我是对的,以上答案是错误的。

在搜索框中

如果您要使用:
common * source
...,则会显示所有文件和文件夹,其子字符串为“ common”,后跟子字符串“ source”:例如,commons-collections4-4.0-sources.jar

注意由于某些无法解释的(Micro $ oft)原因,即使您在“高级选项”中设置了不搜索文件内容的内容,如果您未在搜索字符串的前面加上“名称”,它仍将搜索文件内容:”或“文件名:”

如果您去:
名称:common * source
...什么都不会出现!

如果您去:
文件名:common * source
...这将显示所有文件和文件夹,其子字符串为“ common”,后跟子字符串“ source”:例如,commons-collections4-4.0-sources.jar

如果您转到:
filename:common
...,它将显示名称中带有“ common”的所有文件和文件夹。

如果您转到:
文件名:common -folder
...它将仅显示名称中带有“ common”的文件(没有文件夹)

注意“名称”和“文件名”之间的区别。我怀疑在第一种情况下,它正在使用隐藏在某处的文件的“属性”,并且大多数时候您将要搜索“文件名”。

还要注意,通配符*的使用要求先于通配符的部分位于先于通配符的部分之后(当然)。如果您希望这些子字符串以任何顺序出现在文件名中,则有些棘手。您必须执行以下操作:

文件名:“ * test *”和“ * co *”-文件夹

...等效于:

文件名:“ * co *”和“ * test *”-文件夹

或实际上是这样的:

文件名:“ * test *” +“ * co *”-文件夹


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.