查找子目录中的文件

查找子目录中的文件

还是新手。使用从 System 76 购买的干净机器,安装了 Ubuntu 14.04 LTS。2014 年 5 月中旬拿到的。

为什么我找不到当前目录及其子目录中的文件?

我试过了,,,,ls和。即使哪个能找到它们但不会告诉我findlocatewhichwhereistree | grep在哪里他们是。

例子:我的目录中/home有一些*.t文件。在 home 下面的某些目录中,我有一些 *.t 文件。我很难用一个 CLI 命令找到它们。有什么想法吗?

答案1

问题locate可能在于数据库过时了。locate 使用数据库来显示结果,而该数据库并非实时更新。因此,新文件在创建时不会添加到其中。它们将在数据库更新时添加。

sudo updatedb

为您手动更新,但这也在默认的 Ubuntu 上由 cron 每天完成。locate 不是实时的,但速度非常快。locate 接受通配符。

locate *.jpg 
/discworld/Downloads/Forbidden-Oasis.jpg
/discworld/Downloads/The-Exalted-Plains.jpg
/discworld/Downloads/The-Fallow-Mire.jpg
/discworld/Downloads/The-Hinterlands.jpg
/discworld/Downloads/The-Storm-Coast.jpg
/discworld/Downloads/The-Western-Approach.jpg

locate .t 

如果数据库是最新的,并且有任何以“.t”结尾的文件,则应该会显示结果。如果| grep Western结果太多,您可以通过添加来过滤结果(我上面显示的示例将显示 1 个结果;将显示最后一个结果)。


find是实时的,因此比 慢locatefind如果您搜索不允许搜索的位置,将显示错误。@g_p 评论中的命令是正确的,它会从当前位置搜索以“.t”结尾的文件。

find . -type f -name "*.t"

which并非用于查找文件而是用于查找命令,因此是错误的工具。whereis并非用于查找文件,但您可以用它查找命令的二进制文件、源文件和手册页文件。

相关内容