熟悉 Linux 终端与否,其实取决于你能否很好地应对混乱的目录结构。Linux 查找命令和 Linux 定位命令是你在审计安全权限、清理日志文件,或寻找你确定保存在某处的配置脚本时会用到的。两者都能帮助你找到文件,但它们在幕后的运作方式完全不同。
Linux 的查找和定位命令是什么
Linux 的查找命令是实时的。它实际上会在你的实时文件系统层级中进行遍历,寻找符合你所给出条件的文件——名称、大小、修改时间等等。Linux 的 locate 命令工作方式不同——它查询的是预构建的数据库。它会检查预先索引的文件系统列表,这意味着你几乎能即时获得结果,但这些结果可能不会反映十分钟前发生的变化。
查找与定位的争论,归根结底还是你更看重速度还是准确性。需要最新数据或想按特定元数据筛选?选择查找。只需要在 Linux 上快速按名称查找一个文件,覆盖整个系统?则选择定位。
Find 实时工作原理
当你运行 Linux 的查找命令时,它会从你指定的位置开始递归搜索。要在 Linux 中查找文件,这个工具会直接与 VFS(虚拟文件系统)层通信,检查你指定的目录树中的每一个 inode。是的,这会产生大量的磁盘 I/O,但也意味着如果有人刚刚创建了一个文件,你通过 Linux 文件搜索也能发现它。
定位如何使用数据库
Linux 定位命令执行时不会直接访问你的硬盘。相反,它读取数据库文件,通常位于 /var/lib/mlocate/mlocate.db。这个数据库由 updatedb 工具维护,通常作为 cron 作业每天运行一次。在 Linux 中使用定位命令时,系统只需快速匹配这个索引列表。这比查找命令快很多,但同样不是实时的。
查找与定位如何选择?
选择 Linux 定位还是查找,取决于你想实现什么:
需要按权限、大小或时间筛选时使用”查找”;当你想对搜索结果执行某些操作时;或者当你搜索的是上次数据库更新后才创建的文件时。
当你只记得文件名的一部分,且需要在整个系统而非某个子目录中搜索,并希望快速得到结果时,使用定位。

Linux 查找命令语法和选项
如果你认真对待 Linux 管理,你需要掌握 Linux 的 find 命令语法。这个工具遵循一套相当合理的结构,让你可以非常精细地进行筛选。
基本查找命令语法
Linux 中 find 命令的标准结构如下:
find [path] [expression] [action]
所以如果你想在当前目录中搜索文件:
find . -name “config.yaml”
在看 Linux 的查找命令语法时,点(.)是你的搜索路径,-name 是测试表达式,默认操作只是将结果打印到你的控制台。
查找命令选项参考
除了简单的名称搜索外,查找命令选项还能让你根据技术元数据进行调整。一些常见的 Linux 查找命令示例包括:
-类型:按文件、目录或符号链接进行过滤。
-大小:按特定文件大小或范围进行筛选。
-mtime:根据文件最后修改的天数进行筛选。
-perm:按八进制或符号权限过滤。
如何在 Linux 中按名称查找文件
Linux 查找命令最直接的用例是通过文件名搜索。
大小写区分与不区分大小写的搜索
默认情况下,当你使用 Linux 带 -name 标志的 find by name 时,它会考虑大小写。如果你不确定某项是怎么大写的,可以用 Linux 上的 Find iname。这让你在 Linux 中查找文件的操作更加可靠:
find /etc -iname “NETWORK” will catch “network”, “Network”, and “NETWORK”.
使用万用符搜索多个文件
你可以用万用符来扩展 Linux 的查找命令示例。要用 Linux 的 find 文件按扩展名,请用引号包裹你的模式,这样 shell 在命令运行前不会扩展通配符:
find /var/log -name “*.log”
按名称查找和删除文件
Linux 的查找与删除流程非常强大,但如果不小心也很危险。使用 -delete 标志来删除符合你条件的文件:
find /tmp -name “*.tmp” -delete
在实际执行移除前,务必先执行不带 -delete 的命令,以确认你即将摧毁的目标。
按类型、大小和权限查找文件
技术审计通常需要你搜索符合特定物理或安全标准的文件。
按类型搜索文件
通过 Linux 的“查找文件类型”选项,你可以将结果限制为特定的文件系统对象:
f:常规文件
d:督导部
l:象征性联系
运行查找 /home/user -type d 只返回目录。
按大小搜索文件
当你管理磁盘空间时,Linux 按大小查找文件变得至关重要。使用 Linux 的“按大小查找”标志,比如+表示“大于”,-代表“小于”:
find /var -size +100M
这个 Linux 查找命令可以帮助你识别那些占用系统资源的庞大日志文件。
按权限查找文件
要发现安全漏洞,请使用 Linux 查找权限。你可以搜索拥有正好 777 个权限的文件:
find /var/www -perm 777
按时间和所有权查找文件
高级系统维护意味着确定文件的归属以及最后一次接触的时间。
使用时间戳查找修改过的文件
Linux 的查找修改文件功能使用 -mtime(天)或 -mmin(分钟)。要查找过去 24 小时内在 Linux 中修改的文件日期:
find /etc -mtime -1
这是你排查近期系统变更时常用的 Linux 查找命令的做法。当你需要用 Linux 查找截止日期时,这些时间戳选项对于追踪变化时间变得非常有价值。
按所有者或团体查找文件
如果有人离开你的组织,你可能需要用 Linux 的“按所有者查找”来重新分配他们的设备。
find /home -user john_doe
Linux 的搜索文件工具会遍历树状结构,返回该特定 UID 或用户名拥有的所有对象。
高级查找命令使用
Linux 查找命令的真正威力体现在你开始处理它找到的文件时。
使用执行选项查找
Linux 的查找执行标志允许你对每个找到的文件执行另一个命令。
find /var/logs -name “*.log” -exec chmod 644 {} \;
在这些 Linux 查找命令示例中,{} 是当前文件的占位符,\;终止指令。
使用正则表达式查找文件
对于复杂的模式,Linux find 正则表达式支持正则表达式。
find . -regex “.*[0-9]\{3\}.txt”
这打开了标准万用卡无法处理的高级模式匹配。
查找空文件和目录
要清理你的文件系统,请使用:
find /data -empty
Linux 中的查找命令示例方法有助于识别冗余目录或导致文件杂乱的下载失败。
递归文件搜索,使用查找功能
默认情况下,Linux 的查找命令递归行为已经被启用。它会从你的起始路径下降到每个子目录。你可以用 -maxdepth 标志控制这个 Linux 搜索目录的深度:
find / -maxdepth 2 -name “config*”
Linux 定位命令:语法和设置
如果你知道文件名称,Linux 的定位命令绝对是最快找到文件路径的方法,前提是数据库设置正确。
安装定位软件包
许多现代发行版在 Linux 中默认不包含 locate 命令。在 Ubuntu/Debian 上,安装时有:
sudo apt install mlocate
如何更新定位数据库
因为它依赖索引,你需要运行 updatedb Linux 来反映最近的变更。
sudo updatedb
如果你跳过这一步,Linux 的定位命令将看不到自上次索引周期以来创建的文件。
locate 命令语法
Linux 语法中的 locate 命令相当直接:
locate [options] pattern
查找命令示例
虽然比查找简单,Linux locate 命令仍然提供了几个有用的标记,帮助你优化输出。
搜索确切文件名称
为了避免对包含字符串的每条路径都产生结果,你可以使用 -r(正则表达式)或特定的模式。但说实话,标准的 Linux 定位命令通常能很好地用于搜索文件。
计数和限制搜索结果
如果你的搜索结果是成千上万行,你可以限制输出:
locate -n 10 backup.tar.gz
或者直接统计匹配次数:
locate -c .conf
用定位忽略大小写敏感性
类似于查找,使用 Linux 的 locate 命令使用-i 标志:
locate -i README
仅显示现有文件
如果文件被删除但数据库还没更新,定位会返回“幽灵”路径。使用 -e 来检查该文件是否仍然存在于磁盘上:
locate -e myoldscript.sh
常见问题:Linux 查找并定位命令
如何在 Linux 中查找文件?
在 Linux 中查找文件时,使用查找命令进行实时筛选搜索,使用查找命令进行快速索引搜索。这两者都是你 Linux 文件搜索命令中不可或缺的工具。
如何在 Linux 终端中搜索文件?
在 Linux 中搜索文件最可靠的方法是查找命令。它允许你根据名称、日期、大小等在 Linux 中搜索目录内容。这是大多数管理员使用的 Linux 文件搜索命令。
查找和定位有什么区别?
在 Linux 关于 Find 和 locate 的讨论中,find 是实时且高度可配置的,而 locate 依赖数据库且速度极快。用 Linux 定位和查找比较来判断你是需要速度还是实时准确。
如何在 Linux 中递归使用 find?
Linux 的 find 命令递归搜索实际上是默认行为。只需提供起始目录,它会自动搜索所有嵌套文件夹,无需额外标记。
如何在 Linux 上安装定位?
运行 sudo apt install mlocate(Debian/Ubuntu)或 sudo yum install mlocate(RHEL/CentOS),然后用 updatedb Linux 初始化数据库并使定位命令正常使用。
原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2127.html
