还是新手。使用从 System 76 购买的干净机器,安装了 Ubuntu 14.04 LTS。2014 年 5 月中旬拿到的。
为什么我找不到当前目录及其子目录中的文件?
我试过了,,,,ls
和。即使哪个能找到它们但不会告诉我find
locate
which
whereis
tree | 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
是实时的,因此比 慢locate
。find
如果您搜索不允许搜索的位置,将显示错误。@g_p 评论中的命令是正确的,它会从当前位置搜索以“.t”结尾的文件。
find . -type f -name "*.t"
which
并非用于查找文件而是用于查找命令,因此是错误的工具。whereis
并非用于查找文件,但您可以用它查找命令的二进制文件、源文件和手册页文件。