发布这个来学习,我知道这违反了 UNIX 最佳实践,甚至违反了正常的常识,但我想这就是 Macintosh 计算机有时会做的事情。我有一个备份驱动器,其备份目录如下所示:
>$ tmutil listbackups
/Volumes/My Backup Dr/Backups.backupdb/User’s MacBook Pro/2018-01-18-143624
/Volumes/My Backup Dr/Backups.backupdb/User’s MacBook Pro/2018-03-10-011602
/Volumes/My Backup Dr/Backups.backupdb/User’s MacBook Pro/2018-03-13-014248
/Volumes/My Backup Dr/Backups.backupdb/User’s MacBook Pro/2018-04-10-224116
从命令行,如果我尝试使用ls
列出其中之一的内容,我会因为'
. 请注意,我尝试了在其他帖子中找到的有关复制和粘贴路径的建议,以确保它使用相同的撇号、替换*.
甚至尝试\
转义它。但是我每次都会收到目录未知错误。我还尝试将整个路径放在双引号中,也将路径中的文件夹放在双引号中,撇号。仍然没有运气。
获取上面给出的目录列表的正确语法是什么?如何在该命令变体中使用通配符ls
来列出所有目录中的内容2018-03*
?
最后一点:最好的解决方案可能是丢失撇号,但这是由 Macintosh 在备份期间自动创建的。苹果在想什么?
更新:进一步混淆这个问题
sudo tmutil delete "/Volumes/My Backup Dr/Backups.backupdb/User’s MacBook Pro/2018-03-10-011602"
作品ls
才不是
然而我可以验证这条路径是否存在,甚至可以通过 Mac“finder”用户界面查看内容。
向发布双引号的用户道歉。进一步的测试表明这不是
UNIX
问题,但可能是Mac
问题。不知何故,将整个路径复制并粘贴到命令中并用双引号括起来会产生看起来与原始路径相同的东西,但我现在认为它一定是不同的。如果我以块的形式粘贴路径并测试每个块,建立与原始路径匹配的路径,那么问题就消失了。回答这两个问题的正确
UNIX
语法(列出文件夹并使用通配符,如问题示例中所示),答案如下所示:ls "Volumes/My Backup Dr/Backups.backupdb/User’s MacBook Pro/2018-03-10-011602"
ls "Volumes/My Backup Dr/Backups.backupdb/User’s MacBook Pro/2018-03-"*
第二个示例将列出备份驱动器上 March 文件夹中的所有内容。请注意,
*
必须在双引号目录模式之外。