目录
按目录名称搜索
在当前目录中搜索目录
使用 -iname 忽略大小写
搜索目录和文件
查找最近修改的目录
查找过去 N 天内修改的目录
识别较旧的目录
在指定范围内搜索目录
根据目录权限查找目录
查找包含特定数量文件的目录
搜索空目录
总结
首页 系统教程 操作系统 如何从命令行中找到Linux中的目录

如何从命令行中找到Linux中的目录

Mar 18, 2025 am 09:07 AM

How To Find A Directory In Linux From Command Line

在 Linux 系统中找不到某个文件夹?别担心!Linux 提供强大的命令行工具来查找丢失的目录。其中最通用的工具是 find 命令,它允许您根据各种条件搜索目录。本指南将介绍在 Linux 系统中查找目录的几种方法。

首先,我们将演示如何按名称搜索目录。然后,我们将演示如何查找最近修改的目录和过去 N 天内修改的目录。您还将学习如何识别较旧的目录——那些 N 天前修改的目录。

接下来,我们将介绍如何使用 maxdepthmindepth 选项在指定的深度范围内搜索目录。您将了解如何根据目录的权限以及包含特定数量文件的目录来查找目录。

最后,我们将解释如何搜索空目录,这对于识别文件系统中未使用的或不必要的部分非常有用。

在整个指南中,我们将提供实际示例,以帮助您在使用 Linux 中的目录时充分利用 find 命令。

目录

  • 在当前目录中搜索目录
  • 使用 -iname 忽略大小写
  • 搜索目录和文件
  • 查找最近修改的目录
  • 查找过去 N 天内修改的目录
  • 识别较旧的目录
  • 在指定范围内搜索目录
  • 根据目录权限查找目录
  • 查找包含特定数量文件的目录
  • 搜索空目录
  • 总结

按目录名称搜索

如果您知道目录的名称和搜索的起始位置,请使用以下命令:

find /path/to/search -type d -name "directory_name"
登录后复制

/path/to/search 替换为实际路径,将 "directory_name" 替换为目标目录。

示例:

$ find ~/ -type d -name "Documents"
登录后复制

此命令从用户的 home 目录 (~/) 开始搜索名为 "Documents" 的目录。

以下是命令的细分:

  1. find ~/: 从用户的 home 目录 (~/) 开始搜索。
  2. -type d: 告诉 find 搜索目录 (-type d) 而不是普通文件。
  3. -name "Documents": 此选项告诉 find 查找名为 "Documents" 的目录。"Documents" 两边的引号确保搜索查找的是精确名称,而不仅仅是包含 "Documents" 单词的目录。

因此,此命令将搜索用户的 home 目录及其所有子目录,查找任何名为 "Documents" 的目录。如果找到任何目录,它将打印这些目录的完整路径。

在当前目录中搜索目录

如果您想从当前目录而不是 home 目录 (~/) 开始搜索,您可以简单地省略命令中的 ~/ 部分,如下所示:

$ find . -type d -name "Documents"
登录后复制

以下是每个选项的功能细分:

  1. find .: . 代表当前目录,因此搜索将从当前工作目录开始。
  2. -type d: 告诉 find 搜索目录。
  3. -name "Documents": 此选项告诉 find 查找名为 "Documents" 的目录。

该命令将搜索当前目录及其所有子目录,查找任何名为 "Documents" 的目录,并打印这些目录的完整路径。

或者,您还可以使用 $PWD 变量,它代表当前工作目录,如下所示:

$ find $PWD -type d -name "Documents"
登录后复制

这两个命令都将达到相同的结果,从当前目录开始搜索。

使用 -iname 忽略大小写

这是 find 命令中一个非常有用的标志。

我们可以使用 -iname 选项代替 -name 来进行不区分大小写的搜索。

以下是使用 -iname 而不是 -name 的示例:

$ find . -type d -iname "Documents"
登录后复制

-iname "Documents" 选项将匹配名称为 "Documents"、"documents"、"DOCUMENTS" 等的目录。如果您不确定目录名称的确切大小写,这将非常有用。

-name-iname 之间的主要区别在于:

  • -name 执行区分大小写的搜索,因此它只会匹配与提供的模式大小写完全相同的目录。
  • -iname 执行不区分大小写的搜索,因此它将匹配目录,而不管其大小写如何。

您还可以将搜索词包含在通配符中,如下所示:

$ find . -type d -iname "*documents*"
登录后复制

此命令将列出当前目录(及其子目录)中所有名称中包含 "documents" 的目录。

在您不知道或不关心要查找的目录名称的确切大小写的情况下,使用 -iname 可能更方便。

就我个人而言,在搜索某些内容时,我更喜欢在 find 命令中使用 -iname 选项。

搜索目录和文件

如果您从 find 命令中删除 -type d 部分,它将搜索匹配其他条件(如 -name-iname 选项)的文件和目录。

命令如下所示:

$ find . -iname "Documents"
登录后复制

以下是会发生的情况:

  1. find 命令将搜索当前目录 (.) 及其所有子目录,查找任何名为 "Documents"(不区分大小写)的项目(文件和目录)。
  2. 它将在结果中包含名为 "Documents" 的目录和任何名为 "Documents" 的普通文件。

因此,此命令的输出将包括:

  • 名为 "Documents"、"documents"、"DOCUMENTS" 等的任何目录
  • 名为 "Documents"、"documents"、"DOCUMENTS" 等的任何普通文件

删除 -type d 部分会使搜索范围更广,因为它将包含匹配指定名称模式的目录和文件。

如果您不确定要查找的 "Documents" 条目是目录还是文件,并且您想查找所有出现的情况,这将非常有用。

但是,如果您专门查找名为 "Documents" 的目录,最好保留 -type d 选项以缩小搜索范围。

查找最近修改的目录

要列出在特定日期范围内修改的目录,请使用 -newermt 两次。

例如,要搜索在 2024 年 3 月 15 日和 2024 年 4 月 15 日之间(不包括这两天)创建或修改的目录,您可以使用:

$ find /path/to/search -type d -newermt "2024-03-15" ! -newermt "2024-04-15"
登录后复制

以下是上述命令的细分:

  1. find /path/to/search: 告诉 find 命令从 /path/to/search 目录开始搜索。
  2. -type d: 此选项确保 find 命令仅搜索目录,而不是普通文件。
  3. -newermt "2024-03-15": 此选项告诉 find 仅包含比 2024 年 3 月 15 日更新(创建或修改)的目录。
  4. ! -newermt "2024-04-15": ! 符号否定条件,因此这部分告诉 find 排除比 2024 年 4 月 15 日更新的目录。

这些选项的组合导致 find 搜索在 2024 年 3 月 15 日或之后创建或修改,但在 2024 年 4 月 15 日之前的目录。

例如,如果您想查找在特定时间段内创建或修改的所有目录(例如,用于备份或审计),这将非常有用。

查找过去 N 天内修改的目录

要查找过去 n 天内修改的目录,请使用 -mtime

以下命令将搜索 ~/Projects/ 目录下在过去 7 天内修改过的目录。

$ find ~/Projects/ -type d -mtime -7
登录后复制

以下是命令中每个部分的作用:

  1. find ~/Projects/: 告诉 find 命令从 ~/Projects/ 目录开始搜索。
  2. -type d: 此选项确保 find 命令仅搜索目录,而不是普通文件。
  3. -mtime -7: 此选项告诉 find 仅包含在过去 7 天内修改过的目录(“-mtime”中的“m”代表“修改时间”)。

-mtime -7 部分的工作原理如下:

  • 减号 (-) 表示“小于”或“在过去”。
  • 数字 7 代表天数。

例如,如果您想查找最近在 ~/Projects/ 目录中创建或更新的所有新目录(也许是为了备份或跟踪),这将非常有用。

识别较旧的目录

要查找 N 天前修改的目录(即(查找 N 天前的目录),请使用带有加号的 -mtime

例如,以下命令将搜索 ~/Projects/ 目录下在 7 天前修改过的目录。

$ find ~/Projects/ -type d -mtime  7
登录后复制

换句话说,它将查找在过去 7 天内未修改(创建、更新或访问)的目录。

-mtime 7 选项告诉 find 仅包含修改时间(“-mtime”中的“m”)大于 7 天前的目录。

因此,此命令可用于查找在一段时间内未被触碰或修改的目录,这对于识别未使用的或过时的目录或对项目目录结构执行维护/清理等任务很有帮助。

我们如何知道目录是否真的在 X 天前修改?很简单。

要验证 find 命令找到的目录是否在 7 天前修改,您可以使用 stat 命令显示每个目录的修改时间。

$ find ~/Projects/ -type d -mtime  7 -exec stat -c '%n %y' {} \;
登录后复制

以下是上述命令的解释:

  1. find ~/Projects/ -type d -mtime 7: 此命令部分与之前相同,查找 7 天前的目录。
  2. -exec stat -c '%n %y' {} \;: 此部分使用 find-exec 选项对找到的每个目录运行 stat 命令。
  • stat -c '%n %y': stat 命令显示目录的文件名 (%n) 和上次修改时间 (%y)。
  • {}: 这是一个占位符,由 find 找到的当前目录替换。
  • \;: 这终止了 -exec 命令。

运行此命令时,它将显示 7 天前每个目录的路径和上次修改时间。这使您可以验证找到的目录确实是在 7 天前修改的。

以下是输出示例:

<code>/home/ostechnix/Projects/Python 2024-03-22 14:18:14.958042173  0530
/home/ostechnix/Projects/Vim 2024-03-22 14:05:55.887041168  0530</code>
登录后复制

输出中显示的修改时间将帮助您确认目录确实超过 7 天,正如原始 find 命令所要求的那样。

在指定范围内搜索目录

我们可以使用 find 命令的 maxdepthmindepth 选项在指定的深度范围内搜索目录。

以下是语法:

find /path/to/search -mindepth X -maxdepth Y -type d
登录后复制

让我解释一下此命令中每个选项的作用:

  1. find /path/to/search: 告诉 find 命令从 /path/to/search 目录开始搜索。
  2. -mindepth X: 此选项设置要包含在搜索结果中的目录的最小深度级别。值 X 代表从起点开始的最小目录级别数。
  3. -maxdepth Y: 此选项设置要包含在搜索结果中的目录的最大深度级别。值 Y 代表从起点开始的最大目录级别数。
  4. -type d: 此选项确保 find 命令仅搜索目录,而不是普通文件。

请注意,-mindepth 选项应在其他参数(包括 -type)之前指定。

例如,要在 /Projects 目录中搜索至少 2 层深但最多 4 层深的目录,您可以使用以下命令:

$ find ~/Projects -mindepth 2 -maxdepth 4 -type d
登录后复制

此命令将搜索相对于 /Projects 目录至少 2 层深且最多 4 层深的目录(包含)。

您可以根据您的具体需求调整 X 和 Y 的值。例如,如果您想搜索恰好 3 层深的目录,您可以使用:

$ find ~/Projects -mindepth 3 -maxdepth 3 -type d
登录后复制

这将仅在搜索结果中包含 3 层深的目录。

结合使用 maxdepthmindepth 可以帮助您将搜索范围缩小到特定范围的目录深度,这对于组织和管理文件系统非常有用。

根据目录权限查找目录

要根据目录的权限查找目录,您可以使用带有 -perm 选项的 find 命令。

find /path/to/search -type d -perm <permission_specification></permission_specification>
登录后复制

/path/to/search 替换为您想要开始搜索的目录,并将 <permission_specification></permission_specification> 替换为所需的权限。您可以使用八进制表示法指定权限。

让我向您展示一些示例。

要在当前目录中查找具有权限 755(即所有者为 rwx,组和其他人为 rx)的所有目录:

$ find . -type d -perm 755
登录后复制

要查找所有者具有 rwx 权限、组具有 r-x 权限且其他人没有权限的目录:

$ find . -type d -perm 750
登录后复制

要在 ~/Projects 中查找所有者具有任何权限且组和其他人具有 r-x 权限的所有目录:

$ find ~/Projects~ -type d -perm -005
登录后复制

您可以根据您的具体要求调整 <permission_specification></permission_specification>。此外,如果需要,您可以使用 -maxdepth-mindepth 选项来控制搜索的深度。

查找包含特定数量文件的目录

要查找包含特定数量文件的目录,您可以结合使用 findwc 和 bash 命令。

示例:

以下命令查找当前目录及其子目录中恰好包含 4 个文件的目录,并打印这些目录的完整路径。

$ find . -type d -exec bash -c 'if [ $(find "$1" -maxdepth 1 -type f | wc -l) -eq 4 ]; then echo "$1"; fi' _ {} \;
登录后复制

让我们逐步分解命令:

  1. find . -type d: 从当前目录 (.) 开始搜索目录(而不是文件)。
  2. -exec bash -c '...' _ {} \;: 此部分使用 findexec 选项为找到的每个目录执行自定义 Bash 脚本。
  3. if [ $(find "$1" -maxdepth 1 -type f | wc -l) -eq 4 ]; then echo "$1"; fi: 这是为每个目录执行的自定义 Bash 脚本。
  • $(find "$1" -maxdepth 1 -type f | wc -l): 此部分计算当前目录 (“$1”) 中的文件(而不是目录)的数量。-maxdepth 1 选项确保它只计算当前目录中的文件,而不是子目录中的文件。
  • [ ... -eq 4 ]: 这检查当前目录中的文件数量是否恰好为 4。
  • then echo "$1"; fi: 如果条件为真(目录恰好有 4 个文件),则打印目录的完整路径。

例如,如果您有一组特定目录应该包含一定数量的文件,并且您想快速识别任何不符合该条件的目录,这将非常有用。

搜索空目录

要查找空目录,请使用 -empty 标志:

find /path/to/search -type d -empty
登录后复制

例如,要搜索“Work”目录中的空目录,请运行:

$ find ~/Work/ -type d -empty
登录后复制

请记住根据需要调整路径。

总结

在本指南中,您学习了几种使用 find 命令在 Linux 系统中搜索目录的技术。

您可以按名称、最近更改的时间或内部文件数量进行搜索。您甚至可以找到空文件夹或具有特定权限的文件夹。

通过了解如何使用 maxdepthmindepthsize 等选项,您可以改进搜索以专注于您需要的特定目录。

因此,下次文件夹丢失时,请不要惊慌!使用这些 find 命令来跟踪它并保持文件的组织性。

以上是如何从命令行中找到Linux中的目录的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Linux最好使用的是什么? Linux最好使用的是什么? Apr 03, 2025 am 12:11 AM

Linux最适合用作服务器管理、嵌入式系统和桌面环境。1)在服务器管理中,Linux用于托管网站、数据库和应用程序,提供稳定性和可靠性。2)在嵌入式系统中,Linux因其灵活性和稳定性被广泛应用于智能家居和汽车电子系统。3)在桌面环境中,Linux提供了丰富的应用和高效的性能。

Linux的5个基本组件是什么? Linux的5个基本组件是什么? Apr 06, 2025 am 12:05 AM

Linux的五个基本组件是:1.内核,管理硬件资源;2.系统库,提供函数和服务;3.Shell,用户与系统交互的接口;4.文件系统,存储和组织数据;5.应用程序,利用系统资源实现功能。

什么是基本的Linux管理? 什么是基本的Linux管理? Apr 02, 2025 pm 02:09 PM

Linux系统管理是通过配置、监控和维护来确保系统稳定、高效和安全。1.掌握shell命令如top、systemctl。2.使用apt或yum管理软件包。3.编写自动化脚本提高效率。4.调试常见错误如权限问题。5.通过监控工具优化性能。

如何学习Linux基础知识? 如何学习Linux基础知识? Apr 10, 2025 am 09:32 AM

Linux基础学习从零开始的方法包括:1.了解文件系统和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.学习文件操作,如创建和编辑文件,4.探索高级用法如管道和grep命令,5.掌握调试技巧和性能优化,6.通过实践和探索不断提升技能。

Linux最有用的是什么? Linux最有用的是什么? Apr 09, 2025 am 12:02 AM

Linux在服务器、嵌入式系统和桌面环境中的应用广泛。1)在服务器领域,Linux因其稳定性和安全性成为托管网站、数据库和应用的理想选择。2)在嵌入式系统中,Linux因其高度定制性和高效性而受欢迎。3)在桌面环境中,Linux提供了多种桌面环境,满足不同用户需求。

什么是Linux设备? 什么是Linux设备? Apr 05, 2025 am 12:04 AM

Linux设备是运行Linux操作系统的硬件设备,包括服务器、个人电脑、智能手机和嵌入式系统。它们利用Linux的强大功能执行各种任务,如网站托管和大数据分析。

Linux的成本是多少? Linux的成本是多少? Apr 04, 2025 am 12:01 AM

linuxisfundallyformallyfore,体现了“ freeasinfreedom” WhoallowSuserStorun,研究,共享和ModifyTheSoftware.however,costmarisefromprofessionalsupport,CommercialDistriptions,CommercialDistriptions,proprietaryhardarardwaredrivers,and learlearningresrivers andlearningningningressources.despiteSpiteThesepiteTeThesepototenesepototen

Linux的缺点是什么? Linux的缺点是什么? Apr 08, 2025 am 12:01 AM

Linux的缺点包括用户体验、软件兼容性、硬件支持和学习曲线。1.用户体验不如Windows或macOS友好,依赖命令行界面。2.软件兼容性不如其他系统,缺乏许多商业软件的原生版本。3.硬件支持不如Windows全面,可能需要手动编译驱动程序。4.学习曲线较陡峭,掌握命令行操作需要时间和耐心。

See all articles