防止Spotlight索引外部驱动器


9

有时,我会在上面装有macOS Sierra的外部SSD上结合当前正在运行macOS Sierra的内部驱动器使用。

有关Spotlight一个讨厌的事情是,每当我在寻找的东西就比如当我从我的外部驱动器上运行的是,我从我的两个外部效果内在的动力,这是我不想要的。

当引导到我的外部驱动器时,我尝试为内部驱动器创建Spotlight异常。但是,似乎如果这样做,即使引导到内部驱动器,也会为内部驱动器创建异常因此,似乎Spotlight排除项是由笔记本电脑而不是驱动器绑定的,这意味着无论我从哪个外部驱动器启动,我的内部驱动器都将从Spotlight结果中排除。

当我从外部驱动器运行时,是否可以为内部驱动器创建Spotlight异常,并且同样可以从内部驱动器运行时为外部驱动器创建异常?

Answers:


14

您可能有一个在启动时运行的脚本,该脚本采用了本文中建议的技巧https://apple.stackexchange.com/a/91759/183505

从DriveA引导时(要禁用外部DriveB的聚光灯索引)时,可以执行以下命令:

touch /Volumes/DriveB/.metadata_never_index

从外部DriveB引导时,如果要重新启用聚光灯,也许可以执行启动脚本:

rm /Volumes/DriveB/.metadata_never_index

链接的帖子还列出了以编程方式更改聚光灯排除条件的其他方法。

以下是添加将在登录时启动的脚本的一些方法:https : //stackoverflow.com/questions/6442364/running-script-upon-login-mac

祝好运!


编辑:使用bash脚本和plist文件的方法


首先创建一个启动脚本。我选择在创建一个~/script.sh

确保其可执行 chmod +x ~/script.sh

想要隐藏驱动器的OS脚本

#!/bin/bash
flagLocation="/Volumes/DriveToHide"
flagRemoved=".ney_the_index"  # a new name

# if flag exists rename it.
if [ -a "$flagLocation/.metadata_never_index" ]; then 
    mv "$flagLocation/.metadata_never_index" "$flagLocation/$flagRemoved";
fi

要对驱动器建立索引的OS上的脚本

#!/bin/bash
flagLocation="/Volumes/DriveToHide"
flagRemoved=".ney_the_index"

if [ -a "$flagLocation/$flagRemoved" ]; then
    mv "$flagLocation/$flagRemoved" "$flagLocation/.metadata_never_index"
fi

if [ ! -a "$flagLocation/$flagRemoved" ] || [ ! -a "$flagLocation/.metadata_never_index" ] ; then
    touch "$flagLocation/.metadata_never_index"
fi

创建一个plist文件 ~/Library/LaunchAgents/com.user.loginscript.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>Program</key>
   <string>/Users/yourusername/script.sh</string>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

通过加载和卸载对其进行测试:

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist

似乎这是最好的方法。我希望以某种方式获得更“本土”的东西,但这应该是相当可靠的。谢谢。
Skeleton Bow

我想提一下我要尝试实现的一个问题:该rm命令要求我使用来运行它sudo。我在您发布的SO链接中使用第一种方法。您会对此提出任何建议吗?我是否需要使用启动守护程序方法来克服此问题?
骷髅弓

我用稍微有点怪异的解决方案更新了答案。
hapi

2
如果DriveToHide有空格,则当前编写的脚本将失败。如果要进行测试,请用[ ... ]双引号将变量括起来,以防止出现斑点和单词拆分。或用于[[ ... ]]测试,则不需要双引号。
user3439894 '17

真好!感谢user3439894。我更新了答案以反映您的建议。
hapi

2

对新答案表示歉意(由于我是新来的,因此没有足够的评论意见)

@hapi-我可能会感到困惑,但是脚本的方向是否错误?

想要从聚光灯下隐藏驱动器的OS脚本:重命名 .metadata_never_index

要为驱动器建立索引的OS上的脚本: .metadata_never_index

我以为.metadata_never_index卷上的存在意味着Spotlight忽略了它?

谢谢


我的经验是,.metadata_never_index无论在什么方面在MacOS 10.13没有影响- superuser.com/questions/591406/... ...
匿名

2

我今天了解到,您可以sudo touch /.metadata_never_index_unless_rootfs 在每个驱动器的根目录中使用a 来将索引与OS X引导驱动器分开。这是的特殊版本.metadata-never-index,因为它会在您从驱动器引导时(而不是在不引导时)重新索引驱动器。


-2

尽管其他答案是实现此目的的一种好方法,但它可能会无意中引起问题,并且可能不是100%可靠的。更好的方法是在外部OS上使用Alfred,因为它比Spotlight灵活。


您将如何使用Alfred?
马特·塞弗顿

好问题。我希望我记得如何。我相信我在谈论的是您可以从Alfred搜索中排除文件夹不必使用其他答案中建议的排除方法的方式。
骷髅弓
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.