locate foo从终端运行

locate foo从终端运行

我的 USB 驱动器上某个地方有一个文件丢失了,里面有字符串“foo”。我想使用 MacBook Pro 上的终端恢复它。以sudo超级用户身份使用一些批处理文件列出预期目录,例如

MyMacBook-Pro-2:~ gs$ sudo -s ls -l /volumes/Seagate*
Password: xxxxx

total 2144
-rw-r--r--@  1 gs        wheel      20484 12 Oct 10:55 .DS_Store
d--x--x--x   6 root      wheel        272 12 Oct 10:40 .DocumentRevisions-V100
drwx------   4 _unknown  _unknown     170 20 Feb  2014 .Spotlight-V100
d-wx--x--t@  3 root      wheel        102 29 Aug  2014 .TemporaryItems
d-wx-wx-wt@  3 root      wheel        102 22 Aug 17:35 .Trashes
-rw-r--r--@  1 root      wheel     938428 28 Aug  2013 .VolumeIcon.icns
-rw-r--r--@  1 _unknown  _unknown       0 24 Nov  2015 .com.apple.timemachine.donotpresent
-rw-r--r--   1 root      wheel       1493 12 Oct 13:16 .disk_label
-rw-r--r--   1 root      wheel       5981 12 Oct 13:16 .disk_label_2x
drwx------   2 _unknown  _unknown    2686 12 Oct 13:15 .fseventsd
drwxrwxrwx   4 gs        wheel        170 20 Feb  2014 2013 10
drwxrwxrwx  13 gs        wheel        612 23 Aug  2014 2014 02
drwxr-xr-x   4 gs        wheel        170 28 May 08:34 2014 06
drwxr-xr-x  16 gs        wheel        612 22 Aug 17:35 2014 08
drwxr-xr-x@  7 root      wheel        238  7 Jul  2018 Backups.backupdb
drwxr-xr-x   6 gs        wheel        374 13 Jun 08:15 DT 2019
drwxr-xr-x   5 _unknown  _unknown     306 28 May 08:29 Items Mac 2009
drwx------@  2 _unknown  _unknown     136 30 Jul  2016 Lame_Library_v3
-rwxr-xr-x@  1 root      wheel     115716 30 Sep  2013 tmbootpicker.efi

但是当我尝试使用grep字符串来识别任何文件时终端投诉随后变得紧张,例如

MyMacBook-Pro:~ gs$ sudo -s grep -R “foo” /volumes/Seagate*
grep: /volumes/Seagate Backup Plus Drive/.Spotlight-V100: Operation not permitted

值得注意的是,我最近升级到了 macOS Catalina 10.15。这个答案可能相关,但这个答案也让我谨慎起来。

所以,在我陷入困境或做一些非常愚蠢的事情之前,有人能告诉我我做错了什么吗?

答案1

locate foo从终端运行

locate命令就是为这种情况而设计的。它通常用于 Linux 和 macOS。只需在命令行中输入以下内容:

locate foo

然后它将返回包含单词“foo”的文件和完整文件路径列表。grep如果您知道要查找的路径,您还可以将其与搜索范围结合起来。因此,在您的示例中,请执行以下操作:

locate foo | grep Seagate

如果你找不到它,只需强制更新locate数据库并再次尝试这些命令:

sudo /usr/libexec/locate.updatedb

如果您运行任何这些命令并收到此消息:

WARNING: The locate database (/var/db/locate.database) does not exist. To create the database, run the following command:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

别担心!只需运行命令并构建定位数据库即可。

该消息仅在首次运行的情况下出现locate,我非常肯定这sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist相当于sudo /usr/libexec/locate.updatedb无论如何。可能需要一段时间才能建立初始定位数据库,但一旦完成,它就是一个很好的工具,可用于此类情况。

相关内容