如果您是 Windows 用户或 OSX 的非高级用户,您可能使用 GUI 来查找文件。 您可能还会发现界面有限、令人沮丧或两者兼而有之,并且已经学会擅长组织事物并记住文件的确切顺序。 您也可以在 Linux 中执行此操作——但您不必这样做。
Linux 最好的事情之一是它提供了多种做事方式。您可以打开任何文件管理器并ctrl
+f
,您可以使用您正在使用的程序手动打开文件,或者您可以简单地开始键入字母,它将过滤当前的目录列表。

如何在 Linux 中使用 Ctrl+F 查找文件的屏幕截图
但是,如果您不知道文件在哪里,并且不想搜索整个磁盘怎么办? Linux 具有为此和其他各种用例的良好工具。
通过命令名称查找程序位置
如果您习惯于将事物放置在您喜欢的任何位置,则 Linux 文件系统似乎令人望而生畏。 对我来说,最难习惯的事情之一是找到程序应该存在的位置。
例如,which bash
通常会返回 /bin/bash
,但是如果您下载了一个程序并且它没有出现在您的菜单中,则 which
命令可能是一个很棒的工具。
一个类似的实用程序是 locate
命令,我发现它对于查找配置文件很有用。 我不喜欢输入程序名称,因为像 locate php
这样简单的名称通常会提供许多需要进一步过滤的结果。
有关 locate
和 which
的更多信息,请参阅 man
页面
man which
man locate
Find
find
实用程序提供了更高级的功能。 下面是我在许多服务器上安装的脚本中的一个示例,我管理这些服务器以确保特定模式的文件(也称为 glob)仅存在五天,并且删除所有早于该日期的文件。 (自上次修改以来,使用小数来解释最多 240 分钟的差异。)
find ./backup/core-files*.tar.gz -mtime +4.9 -exec rm {} \;
find
实用程序具有许多高级用例,但最常见的是在结果上执行命令,而无需链接,并按类型、创建和修改日期过滤文件。
find
的另一个有趣的用途是查找所有具有可执行权限的文件。 这可以帮助确保没有人在其昂贵的服务器上安装比特币矿工或僵尸网络。
find / -perm /+x
有关 find
的更多信息,请使用 man find
查看 man
页面。
Grep
想通过其内容查找文件吗? Linux 已经涵盖了这一点。 您可以使用许多 Linux 实用程序来有效地搜索与模式匹配的文件,但我经常使用 grep
。
假设您有一个应用程序,它传递带有代码引用和堆栈跟踪的错误消息。 您在日志中找到这些。 Grepping 并不总是首选,但如果问题出在提供的价值上,我总是 grep -R
。
越来越多的 IDE 正在实现查找功能,但是如果您正在访问远程系统或者由于某种原因没有 GUI,或者如果您想就地迭代,请使用:grep -R {searchterm}
或在支持 egrep
别名的系统上;只需添加 -e
标志到命令 egrep -r {regex-pattern}
。
去年我在修补 Raspbian 中的 dhcpcd5
时使用了此技术,以便我可以继续在 Raspberry Pi Foundation 的较新 Debian 版本上操作网络接入点。
哪些技巧可以帮助您更有效地在 Linux 上搜索文件?
7 条评论