![如何查找文件](https://linux22.com/image/522779/%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6.png)
我正在使用 Linux 服务器,文件丢失了,我需要找到所有与名称 MyMissingFile 匹配的文件...我该如何发出命令,对用户文件夹下的所有目录进行递归搜索,并告诉我文件在哪里?
我不是 root 用户。谢谢
答案1
怎么样
cd <userfolder>
find . -name <filename> -print
顺便说一句,文件名可以包含一个模式,并且
因此
find . -name '*MyMissingFile*' -print
答案2
有多种方法可以查找文件。
最简单的方法可能是使用locate
命令。此命令使用已知文件的缓存。要使用它,您需要使用 确保缓存是最新的updatedb
。就您而言,您必须相信它是最新的,因为您不是 root 并且无法更新数据库。要使用locate
,请键入:
$ locate MyMissingFile
如果您只想要名为“MyMissingFile”的文件,请使用:
$ locate MyMissingFile | grep "/MyMissingFile$"
现在,如果您知道文件在哪个目录中,则可以使用find
。find
不依赖于缓存数据库,而是将递归扫描目录并打印找到的所有文件。有大量选项可以过滤找到的文件(请参阅man find
列出它们),包括一个-name
按文件名过滤的选项。按如下方式使用它:
$ find $yourdirectory -name MyMissingFile
这将匹配名称完全为“MyMissingFile”的文件。要匹配名称包含“MyMissingFile”的文件,请使用:
$ find $yourdirectory -name "*MyMissingFile*"
请注意,locate
通常比快得多find
,因为它在缓存中含有答案,而find
需要读取给定目录下的所有文件。
答案3
locate -r '/MyMissingFile$'
比使用 grep 的建议更有效。但不是每个版本的locate都接受-r(尽管GNU findutils中的locate接受-r)。