如何找到比找到或找到的文件更快的文件?

我一直在使用find命令在我的1 tb硬盘上查找文件。 这需要很长时间。 然后我使用locate,使用updatedb定期更新certificate更快。 但是locate的限制是我找不到具有一定大小或修改/创建时间的文件。 你能告诉我如何以更快的速度查找文件的任何想法,或者在这种情况下如何管理locate命令的输出,以便可以显示或重定向到文件等所有其他信息,如大小,时间等。

我没有看到接近柴坦亚的愿望的答案。 如果要搜索文件名,则locate,find,ls和grep的组合就足够了。 但我认为Chaitanya想要搜索“2011年之前创建的所有文件”的例子。 这可以通过find完美完成,但我可以想象通过1TB搜索需要很长时间(更多地取决于文件的数量,而不一定是总大小)。 为了加快速度,我认为索引是不可避免的。 locate(使用updatedb索引)的问题在于它不会为创建时间编制索引。

那么Chaitanya需要的东西是索引文件所需的属性(文件名,文件大小,创建日期,更多?)。 以后可以搜索这些属性的东西。 据我所知,在Ubuntu上没有开箱即用的解决方案。

Chaitanya的一个重要评论:“现在问题是我正在设计一个基于php的网络gui ……”。 因为你的问题听起来很具体,也许你想自己建立一些东西。 一些建议:

  • 索引数据库中的文件(使用cronjob)并使用SQL进行搜索。

  • 使用Lucene进行索引和搜索( Zend Lucene for PHP)

你可以试试Tracker 。 它有一个守护程序,它等待文件更改并使用所有元数据更新数据库,以及可用于搜索文件的客户端。 请注意,它仅索引用户目录,而不是所有硬盘。

主要的回归是它需要CPU时间来索引,所以只有在你的计算机有备用电源的情况下才能使用它。

您将需要安装服务器和客户端,它们被命名为tracker和tracker-gui。 如果您在软件中心搜索跟踪器,则它们是第一个匹配项。 如果您更喜欢从命令行安装它们:

 sudo apt-get install tracker tracker-gui 

回复评论:

ls -la "$(locate -d external.db "Duel of Fates (Darth ")"

生产:

  -rw-rw-r-- 1用户组4075134 2012-03-30 22:37 / home / user /音乐/星球大战:第1集 - 命运决斗(达斯摩尔的主题).mp3 

在AskUbuntu的@Oli中聊天,让我转向“东西”来绕过shell逃脱

locate的问题在于它只是偶尔在常规cron时间表上收集文件信息。 如果您需要mlocate来更新其信息,请运行此命令

 $ sudo /etc/cron.daily/mlocate 

如果您需要一个更“实时”并且不断更新的解决方案,我建议您选择专门用于监控文件系统的内容,例如Javier Rivera所说的tracker-gui

要将locate的输出重定向到文件,只需使用箭头>而不是管道| 字符。 (如果输出文件已经存在,则一个箭头将覆盖输出文件。如果输出文件已存在,则两个箭头将附加到输出文件。)

 $ locate filename > output.txt # Overwrite $ locate filename >> output.txt # Append 

使用“查找选项参数”。 请参阅“man find”更多详细信息。 使用locate可以快速轻松地查找文档,例如。 “locate * .jpg”

使用gnome-search-tool

它提供

  • 文件内容
  • 修改日期
  • 尺寸
  • 文件空虚
  • 所有者/组
  • 名称模式排除
  • 命名正则表达式匹配
  • 隐藏和备份文件