【问题标题】:mdfind equivalent on linux?linux上的mdfind等价物?
【发布时间】:2009-01-26 00:03:02
【问题描述】:

Mac OS X 是一个漂亮的系统,从 mach 内核到 finder 和 Spotlight,说到 Spotlight,当我只需要执行这个命令来获取所有 unix 可执行文件和仅 unix 可执行文件时,它真的让我大吃一惊:

mdfind "kMDItemKind == 'Unix Executable'"

太棒了!!!真的!!!

现在,问题是有谁知道不涉及复杂查找咒语或不返回误报的等效 unix 或 linux 命令(比如有人烫发他们所有的图像 rwxrwxrwx ?

【问题讨论】:

    标签: linux macos unix find


    【解决方案1】:

    BeagleMetaTrackerStrigi,甚至Google Desktop 都是 Linux 的桌面索引器。默认情况下有什么取决于您的发行版(有些可能根本没有),并且它们都有不同的工具和界面,但前三个支持Xesam,因此xesam-tool可以提供mdfind-like命令行界面。

    【讨论】:

      【解决方案2】:

      在 Linux 下有 3 种方法可以解决这个问题。

      1。使用定位工具

      您可以使用命令locatewhichwhereis 来查找与系统上的模式匹配的程序和文件。

      2。可执行文件保存在指定区域

      Linux 系统上 90% 的可执行文件安装在 /usr/bin/usr/sbin/bin/sbin 下,因此可用的可执行文件并不是一个谜。

      3。使用查找

      使用 find 查找设置了可执行位 (--x--x--x) 的文件。

      % find . -executable -type f
      

      4。使用你的包管理器

      您还可以使用您的 Linux 发行版的包管理器(yum、apt 等)来找出为给定包或所有已安装包安装的可执行文件。

      【讨论】:

      • 这确实不是一回事,虽然find命令可以解决提问者的需求。 Spotlight 速度极快,并且支持对整个硬盘驱动器进行全文搜索。一旦习惯了,就真的没有回头路了!
      • 不是问题的答案;这些工具都没有文件内容索引。
      【解决方案3】:

      不是真的,其他 UNIX 系统都没有在文件系统中内置索引器(BeOS 除外,但它不是 UNIX 系统,而且基本上已经死了)。您可以在所有 BSD 系统上使用locate(1) 命令(日常脚本使用locate.updatedb 创建定位数据库),但这只使您能够找到路径名。它不处理关键字和文件类型等元数据。

      说实话,这是 MacOS X 中最好的事情之一,请忍受它 :)

      【讨论】:

      【解决方案4】:
      sudo ls -Rla / | grep regexOrNameOfSomethingYouAreLookingFor &
      

      最好将它放在 BG 中,因为它可能需要一段时间。还可以将其聚焦到特定位置或 WD 极大地加速它:

      sudo ls -Rla ~/Documents/ | grep regexOrNameOfSomethingYouAreLookingFor
      

      【讨论】:

      • 对不起,不,大不。首先:您所做的是搜索文件 names,而不是文件 content(您可以使用 [gulp] ls 进行搜索!)。其次,对于您所做的事情,索引文件位置,有一个更优雅、更高效的工具:mlocate(1)
      猜你喜欢
      • 2011-08-16
      • 2013-09-08
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2018-07-10
      相关资源
      最近更新 更多