如何在cmd中执行简单的文件搜索


131

我想从Windows命令行(不是Power Shell)快速搜索给定名称或名称一部分的文件。这类似于打开资源管理器并使用顶部的搜索框。

注意:dir可以基于字符串模板进行搜索,但不会在子目录中搜索。

注2:findstr可用于在文件内搜索令牌并具有递归标记;有趣的是,可以轻松发现更复杂的发现...


Answers:


175

dir /s *foo* 在当前文件夹和子文件夹中搜索。

它查找目录和文件。

/ s表示(文档)

/ s列出在指定目录和所有子目录中每次出现的指定文件名。


我还有一个问题,如何将这些找到的文档复制到另一个文件夹?非常感谢
Hong Cheng

@HongCheng您可以在使用上述命令验证输出后使用通配符,方法与查找所有文件并将其复制到目录中一样XcopyDIRxcopy *foo* c:\Temp*foo*c:\Temp
Vinod Srivastav

128
dir /b/s *.txt  

在目录树中搜索所有txt文件。之前使用它只是改变目录使用

cd/

您还可以使用以下方法将列表导出到文本文件

dir /b/s *.exe >> filelist.txt

并在使用中搜索

type filelist.txt | find /n "filename"

编辑1: 虽然此目录命令自从旧的dos时代起就可以使用,但是Win7添加了一个新的名称,其中

where /r c:\Windows *.exe *.dll

将按照@SPottuit的建议在驱动器c:\ Windows中搜索exedll,也可以使用以下命令将输出复制到剪贴板

where /r c:\Windows *.exe |clip

只需等待提示返回,然后再复制任何内容。

编辑2: 如果您递归搜索并且输出很大,您可以始终使用它more来启用分页,它将-- More --在底部显示,并在您按SPACE或逐行移动时滚动到下一页ENTER

where /r c:\Windows *.exe |more

如需更多帮助,请尝试

where/?

5
您也可以将列表替换为>> filelist.txt,将列表导出到剪贴板| clip有关使用|的更多信息 剪辑
Sjoerd Pottuit '16

6
通过仅在文件名或文件路径/b后面添加dir(如果在多个文件夹中搜索),将返回(b为格式),并且没有文件和文件夹的详细信息。通过增加/s背后dir小号 UB-目录也将被搜索。有关dir命令的更多信息
Sjoerd Pottuit '16

不知道为什么这不是公认的答案。包含一切,还有更多。感谢您发布此信息。希望我能投票一次以上!
Avrohom Yisroel

1
有人希望只有cd \或cd \会更改到根目录,但是cd /似乎也能在Windows 10上完成工作-不确定,因为这是正确的DOS / Windows版本
George Birbilis

1
@Vinod Srivastav,非常好。解释了所有可能的情况。
克兰托·阿贡图克


0

DIR的问题在于它将返回错误的答案。如果您正在使用DOC来查找文件夹中的DOC,DIR *.DOC还将获得DOCX。搜索*.HTM还将提供HTML等等。


2
这就是为什么要使用WHERE作为Where /R c:\ *.DOC *.HTM为宗旨
维诺德Srivastav

Vinod Srivastav。我现在尝试了,哇,这项工作令人惊奇。:)我将在我的批次中实施。
霍布·隆达尔

0

您可以通过DOS和资源管理器GUI在Windows中搜索。

DOS:

1)DIR

2)ICACLS(搜索要在其上设置ACL的文件和文件夹)

3)cacls ..................................................... ...

2)例子

icacls c:* ntoskrnl *。* / grant system:[f)/ c / t,然后使用sysinternals中的PMON监视哪些文件夹被拒绝访问。结果包含

访问路径包含您的驱动器

进程名称是explorer.exe

这些是您必须应用的过滤器

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.