我的 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
无论如何。可能需要一段时间才能建立初始定位数据库,但一旦完成,它就是一个很好的工具,可用于此类情况。