如何用命令快速查找文件夹
- 电脑教程
- 2025-06-17
- 4738
dir /s /ad "文件夹名" 命令(CMD)或 
 Get-ChildItem -Path "路径" -Directory -Recurse -Filter "*名*"(PowerShell),在 Linux/macOS 中使用 
 find /搜索路径 -type d -name "文件夹名" 命令,星号 
 * 可匹配任意字符。
在计算机管理中,有时你需要快速找到特定名称或位于特定位置的文件夹,尤其是在处理大量文件或进行自动化脚本编写时,图形界面点击查找虽然直观,但效率往往不如命令行(Command Line)方式高,命令行查找不仅速度快、功能强大,而且可以精确匹配,是高级用户和系统管理员的首选工具。
本文将详细介绍在主流操作系统(Windows, macOS, Linux)上如何使用命令行查找文件夹,掌握这些命令,能显著提升你的工作效率。
核心原理:
命令行查找文件夹的核心是告诉系统:
- 从哪里开始找(指定搜索路径)。
- 找什么(指定文件夹名称或匹配模式)。
- 如何找(是否进入子目录递归搜索)。
在 Windows 系统中查找文件夹

Windows 主要提供两种命令行环境:传统的命令提示符 (cmd.exe) 和更强大的 PowerShell。
方法 1:使用 dir 命令 (命令提示符 – cmd.exe)
- dir命令是 Windows 最基础的目录列表命令,结合参数可以用于查找文件夹。
- 基本语法: dir <路径> /s /ad <搜索模式> 
- 参数详解: 
  - <路径>: 指定开始搜索的目录。- C:Users或 (表示当前目录),如果省略,默认为当前目录。
- /s: 递归搜索,这是关键参数,表示不仅搜索指定目录,还会进入其所有子目录进行搜索。
- /ad: 只显示目录 (Attribute: Directory),这确保结果只包含文件夹,排除文件。
- <搜索模式>: 指定要查找的文件夹名称或通配符模式,常用通配符:- : 匹配任意字符任意次数(*project*匹配所有名称中包含 “project” 的文件夹)。
- : 匹配单个任意字符(data?匹配 “data1”, “dataA” 等)。
 
- : 匹配任意字符任意次数(
- /b(可选): 简洁格式,只显示文件夹的完整路径,不显示大小、日期等额外信息,结果更清晰。
 
- 常用示例: 
  - 在当前目录及其所有子目录中查找名为 “Reports” 的文件夹: dir /s /ad "Reports" 
- 在 D 盘根目录及其所有子目录中查找名称包含 “Backup” 的文件夹 (使用通配符): dir D: /s /ad "*Backup*" 
- 在 “C:Projects” 目录及其子目录中查找以 “2025” 开头的文件夹 (简洁格式输出): dir "C:Projects" /s /ad /b "2025*" 
 
- 在当前目录及其所有子目录中查找名为 “Reports” 的文件夹: 
- 重要提示: 
  - 如果路径或搜索模式包含空格,必须用双引号 () 包裹起来(如示例 1 和 3)。
- 搜索可能花费一些时间,尤其是在大范围(如整个 C 盘)或包含大量文件的目录中。
 
方法 2:使用 Get-ChildItem 命令 (PowerShell)

PowerShell 的 Get-ChildItem (别名 dir, ls, gci) 功能更强大、灵活,是推荐的方式。
- 基本语法 (查找文件夹): Get-ChildItem -Path <路径> -Recurse -Directory | Where-Object { $_.Name -like "<模式>" }
- 参数和管道详解: 
  - -Path <路径>: 指定开始搜索的目录,默认为当前目录。
- -Recurse: 递归搜索,等同于 cmd 的- /s。
- -Directory: 只获取目录项,这是 PowerShell 特有的便捷参数,直接过滤出文件夹。
-  (管道符): 将 Get-ChildItem找到的所有文件夹对象传递给下一个命令处理。
- Where-Object { ... }: 对管道传来的每个对象进行条件过滤。
- $_.Name: 在- Where-Object脚本块中,- $_代表当前管道中的对象(一个文件夹),- .Name是其名称属性。
- -like "<模式>": 匹配运算符,支持通配符 和 ,模式通常需要用引号包裹,还有其他匹配运算符如- -eq(精确等于)、- -match(正则表达式) 等。
 
- 常用示例: 
  - 在当前目录及其所有子目录中查找名为 “Documents” 的文件夹: Get-ChildItem -Recurse -Directory | Where-Object { $_.Name -eq "Documents" }
- 在 “C:Work” 目录及其子目录中查找名称包含 “Client” 的文件夹: Get-ChildItem -Path "C:Work" -Recurse -Directory | Where-Object { $_.Name -like "*Client*" }
- 在用户主目录 ($HOME) 及其子目录中查找以 “Temp” 开头的文件夹 (简洁输出完整路径):(Get-ChildItem -Path $HOME -Recurse -Directory -Filter "Temp*").FullName - 这里使用了 -Filter参数直接在Get-ChildItem阶段过滤名称(只支持简单通配符,效率更高),然后通过.FullName属性直接输出文件夹的完整路径。
 
- 这里使用了 
 
- 在当前目录及其所有子目录中查找名为 “Documents” 的文件夹: 
- 优势: 
  - 结果以对象形式返回,方便后续处理(如删除、移动、获取属性等)。
- 过滤条件更灵活强大(可使用正则表达式 -match,复杂逻辑判断等)。
- 命令结构更清晰易读。
 
在 macOS 和 Linux 系统中查找文件夹
macOS 和 Linux 都基于 Unix,共享强大的 find 命令,这是查找文件夹(目录)的最核心工具。

- 基本语法: find <起始路径> -type d -name "<模式>" 
- 参数详解: 
  - <起始路径>: 指定搜索开始的目录。- /Users/YourName或 (根目录,需谨慎) 或 (当前目录)。必须指定。
- -type d: 指定查找类型为目录 (Directory),这是关键参数,确保只找到文件夹。
- -name "<模式>": 按名称匹配。- <模式>可以使用 shell 通配符:- : 匹配任意字符任意次数(*data*)。
- : 匹配单个任意字符(project?)。
- [abc]: 匹配括号内任意一个字符(- log[123])。
- 注意: 模式通常区分大小写,如果路径或模式包含空格或特殊字符(如 , , [,]),必须用单引号 () 或双引号 () 包裹起来,建议优先使用单引号。
 
- : 匹配任意字符任意次数(
 
- 常用示例: 
  - 在当前目录 () 及其所有子目录中查找名为 “Downloads” 的文件夹: find . -type d -name "Downloads" 
- 在用户主目录 () 及其子目录中查找名称包含 “backup” 的文件夹 (注意大小写): find ~ -type d -name '*backup*' 
- 在整个系统 () 中查找名为 “config” 的文件夹 (需要管理员权限 sudo,且可能输出大量权限错误):sudo find / -type d -name "config" 2>/dev/null - sudo: 以管理员权限运行(需要输入密码)。
- 2>/dev/null: 将错误信息(如 “Permission denied”)重定向到空设备,使输出结果更干净。
 
 
- 在当前目录 () 及其所有子目录中查找名为 “Downloads” 的文件夹: 
- find的强大之处:- 除了 -name,还有众多其他条件可用,如按修改时间 (-mtime)、文件大小 (-size)、所有者 (-user)、权限 (-perm) 等。
- 可以对找到的结果执行操作 (-exec或-delete),功能极其强大(使用需谨慎)。
 
- 除了 
- 替代方案:locate/mlocate- 命令: locate <模式>或mlocate <模式>
- 原理: 搜索一个预建好的文件名数据库 (updatedb),速度极快。
- 局限性: 
    - 数据库不是实时的,新建的文件/文件夹需要等待 updatedb任务运行(通常每天自动运行一次)或手动运行sudo updatedb后才能找到。
- 默认不区分文件/文件夹类型,要只查找文件夹,通常需要结合 grep:locate -b '<模式>' | grep '/$' - -b '<模式>':- 防止模式被解释为选项,- <和- >表示单词边界(精确匹配单词),- -b只匹配路径的基本名(最后一部分)。
- | grep '/$': 用- grep过滤输出, 匹配以斜杠 结尾的行(在- locate输出中,目录通常以 。
 
 
- 数据库不是实时的,新建的文件/文件夹需要等待 
- 示例: 快速查找名称精确为 “Documents” 的文件夹: locate -b 'Documents' | grep '/$' 
 
- 命令: 
实际应用与注意事项
- 明确搜索范围: 尽量缩小起始路径范围(如 C:UsersYourNameDocuments或~/Projects),从根目录(C:, )搜索会非常慢,并可能产生大量无关结果或权限错误。
- *善用通配符 (`?):** 它们是模糊匹配的关键。project比project` 能匹配到更多包含 “project” 的文件夹。
- 处理空格和特殊字符: 
  - Windows (cmd/PowerShell): 路径和包含通配符的模式必须用双引号 () 包裹。
- macOS/Linux (find/locate): 路径和包含通配符 (, , [,]) 或空格、、 等特殊字符的模式必须用单引号 () 或双引号 () 包裹,单引号内的内容会被原样传递,通常更安全。
 
- 权限问题: 
  - 在 macOS/Linux 上搜索系统目录或他人目录时,常会遇到 “Permission denied”,使用 sudo可以解决(需谨慎),或用2>/dev/null(find) 或locate忽略这些错误。
- 在 Windows 上,如果以非管理员身份运行命令提示符或 PowerShell,也可能无法访问某些受保护目录。
 
- 在 macOS/Linux 上搜索系统目录或他人目录时,常会遇到 “Permission denied”,使用 
- 输出解读: 
  - Windows dir /s /ad会列出找到的每个文件夹及其路径、日期等信息。/b只显示路径。
- PowerShell Get-ChildItem ... | Where-Object ...默认输出文件夹对象(显示模式、名称、最后写入时间等),.FullName只输出路径。
- find命令默认输出匹配项的完整路径。
- locate ... | grep '/$'输出以 结尾的完整路径。
 
- Windows 
- 安全提示: 对命令行返回的结果执行操作(尤其是删除 -delete或rm -rf)务必极其谨慎,最好先不加操作参数运行命令,仔细检查结果无误后再执行操作,避免在根目录执行破坏性命令。
掌握命令行查找文件夹的技能是提升计算机操作效率的重要一步,无论是 Windows 的 dir /s /ad 和 PowerShell Get-ChildItem, 还是 macOS/Linux 的 find -type d,核心都在于指定路径、递归搜索 (/s, -Recurse, find 默认递归)、过滤类型 (/ad, -Directory, -type d) 和名称匹配 (<模式>, -like, -name),根据你的操作系统和具体需求选择合适的命令,并注意路径、通配符、引号和权限的处理,多加练习,你就能快速精准地定位到所需的文件夹。
引用说明:
- Microsoft Docs – dir命令: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/dir
- Microsoft Docs – Get-ChildItem(PowerShell): https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem
- GNU find手册: https://www.gnu.org/software/findutils/manual/html_mono/find.html (适用于 Linux)
- macOS find手册页 (在终端运行man find)
- locate/- mlocate手册页 (在终端运行- man locate或- man mlocate)
 
  
			 
			 
			 
			 
			