注意:`dir` 命令可以基于字符串模板进行搜索,但它不会在子目录中搜索。
注意2:`findstr` 命令可以用于在文件中搜索标记,并具有递归标记。有趣的是,更复杂的搜索可以很容易地发现...
Xcopy
命令时,你可以结合通配符来查找文件。在使用 xcopy *foo* c:\Temp
命令前,请先通过上面的 DIR
命令验证输出结果,以便将所有 *foo*
文件复制到 c:\Temp
目录中。 - Vinod Srivastavdir /a:h /s /b
或 dir /a:s /s /b
。更多参考请见 https://dev59.com/Cmsz5IYBdhLWcg3wLU12#25717502。 - Vinod Srivastav列出当前目录及其子目录中的所有文件
dir /b/s *.txt
以上命令在目录树中搜索所有txt文件。
但是由于Windows开始将目录命名为
.nuget
,.vscode
,因此它也使用上述命令。
为了避免这种情况,并获得一个干净的列表,请使用/a:-d
筛选器。
dir /a:-d /b/s
在使用之前,只需将目录更改为根目录即可
cd/
还有一种比较欺骗性的命令可以实现同样的功能
for /r %f in (*) do @echo %f
@echo
部分,它将尝试执行目录中的所有文件,并且/r
是使其递归查看子目录的关键。
将结果导出到文本文件
您还可以使用以下方法将列表导出到文本文件中
dir /b/s *.exe >> filelist.txt
并在其中搜索
type filelist.txt | find /n "filename"
如果你正在寻找具有特殊属性的文件,可以尝试
列出所有隐藏文件
dir /a:h-d /b/s
列出所有系统文件
dir /a:s-d /b/s
列出所有只读文件
dir /a:r-d /b/s
列出所有未索引的文件
dir /a:i-d /b/s
如果您从上面的所有命令中删除-d
,它也会列出目录。
在Windows7+中使用where
:
尽管这个dir命令自从早期的DOS时代就存在了,但Win7添加了一个新功能叫做Where。
where /r c:\Windows *.exe *.dll
将在驱动器 c:\Windows 中搜索 exe 和 dll,如 @SPottuit 所建议的,您还可以使用剪贴板复制输出
where /r c:\Windows *.exe |clip
只需等待提示返回,不要在此之前复制任何内容。
使用more
进行分页
如果您正在递归搜索并且输出很大,您可以始终使用more
启用分页,它将在底部显示-- More --
,一旦您按下SPACE
或按下ENTER
逐行移动,它将滚动到下一页。
where /r c:\Windows *.exe |more
如需更多帮助,请尝试
where/?
dir
命令后添加/b
参数,只会返回文件名或者文件路径(如果在多个文件夹中搜索),不会显示文件和文件夹的详细信息。在dir
命令后添加/s
参数,还会搜索子目录中的内容。更多有关dir
命令的信息,请参阅此处。 - Sjoerd Pottuitdir *.txt /s /p
会提供更详细的信息。
/p
将会暂停,与where /r c:\Windows *.exe /T |more
相同。 - Vinod SrivastavDIR 命令的问题在于它会返回错误的答案。
如果你想要在一个文件夹中查找 DOC 文件,使用 DIR *.DOC
命令也会返回 DOCX 文件。搜索 *.HTM
也会返回 HTML 等等...
你可以通过DOS和资源管理器GUI在Windows中进行搜索。
DOS:
1)DIR
2)ICACLS(搜索要设置ACL的文件和文件夹)
3)cacls..................................................
例如:
使用icacls c:*ntoskrnl*.* /grant system:(f) /c /t,然后使用来自Sysinternals的PMON监视被拒绝访问的文件夹。
结果包含:
访问路径包含您的驱动器
进程名称为explorer.exe
这些都是必须应用的过滤器。
windows
和 cmd
,而不是 sysinternals/pmon
。还有其他方法,比如在 C程序 中使用 FindFirstFileA
或在 c#程序 中使用 Directory.GetFiles
,但它们超出了上下文。 - Vinod Srivastav