Estou tentando criar um script de shell que excluirá uma pasta de nível superior dos Favoritos do Safari usando o arquivo Bookmarks.plist do Safari pelo nome da pasta. Infelizmente, o único método que eu encontrei para excluir o item do dicionário com PlistBuddy ou plutil é pelo número do índice.
Aqui está a estrutura básica:
<dict>
<key>Children</key>
<array>
<dict> ... history ... </dict>
<dict> ... bookmarks bar ... </dict>
<dict> ... bookmarks menu ... </dict>
<dict> ... reading list ... </dict>
<dict> ... folder 1 ... </dict>
<!-- Delete this item -->
<dict>
<key>Sync</key>
<dict>
<key>Data</key>
<data>...</data>
<key>ServerID</key>
<string></string>
</dict>
<!-- By this key/value -->
<key>Title</key>
<string>Delete This Folder</string>
<key>WebBookmarkType</key>
<string>WebBookmarkTypeList</string>
<key>WebBookmarkUUID</key>
<string>21D71C04-F58B-43ED-B02C-7D9A208CCEC0</string>
</dict>
<dict> ... folder 3 ... </dict>
</array>
<dict>...</dict>
<key>Title</key>
<string></string>
<key>WebBookmarkFileVersion</key>
<integer>1</integer>
<key>WebBookmarkType</key>
<string>WebBookmarkTypeList</string>
<key>WebBookmarkUUID</key>
<string>892D35B5-DD40-418F-83D3-7AB77C2D9C03</string>
</dict>
</plist>
Desejo excluir todo o item do dicionário na primeira matriz com o Title
value Delete This Folder
, pois os itens e os números de índice podem mudar o tempo todo.
Eu posso excluir este item por índice com sucesso de algumas maneiras, incluindo:
PlistBuddy:
PlistBuddy -c "delete :Children:5" /Users/myuser/Library/Safari/Bookmarks.plist
plutil:
plutil -remove Children.5 /Users/myuser/Library/Safari/Bookmarks.plist
Mas eu não encontrei a sintaxe correta - se é que é possível - para excluir pelo título com qualquer um desses utilitários, nem encontrei outro utilitário de linha de comando que possa fazê-lo.
Como alternativa, não estou disposto a um processo de duas etapas:
Não sei ao certo por onde começar com isso e tenho certeza de que PlistBuddy
, plutil
e defaults read
não têm a capacidade de pesquisar, contar e retornar o valor para mim.
Obrigado, qualquer recomendação seria muito apreciada, tenho procurado e testado técnicas nas últimas horas sem qualquer sorte.