发布此内容是为了学习,我知道这违反了 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”UI 查看内容。
答案1
向发布有关双引号的用户致歉。进一步的测试表明这不是一个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 文件夹中的所有内容。请注意, 必须*
位于双引号目录模式之外。