测试了所有建议后,似乎最可靠的方法是使用书签管理器手动删除所有重复的书签(相同的行为和解决方案,如上面Garrett Mitchener的回复中所述)。
主要的症结在于确保仅删除重复项。换句话说,在书签管理器中获取唯一书签的列表,以在清理后进行比较。
使用Ubuntu Trusty上的标准Linux工具,效果很好:
备份书签文件,以防意外删除唯一文件夹:
$ cp -av .config/google-chrome/Default/Bookmarks{,.orig}
‘.config/google-chrome/Default/Bookmarks’ -> ‘.config/google-chrome/Default/Bookmarks.orig’
获取所有URL的计数:
$ grep -c '"url": ' .config/google-chrome/Default/Bookmarks
获取所有唯一网址的计数:
$ grep '"url": ' .config/google-chrome/Default/Bookmarks | awk '{print $2}' | sort | uniq | wc -l
将grep插入awk比单独使用awk匹配要快得多,并且awk必须通过管道进行排序才能准确获得唯一条目。
将它们全部粘贴到文件中,也可以在我们处理时删除多余的双引号:
$ grep '"url": ' .config/google-chrome/Default/Bookmarks | awk '{print $2}' | sort | uniq | sed 's/^"//;s/"$//' > Bookmarks-Original.txt
在书签管理器中执行清理,然后从书签文件中提取所有唯一的URL:
$ grep '"url": ' .config/google-chrome/Default/Bookmarks | awk '{print $2}' | sort | uniq | sed 's/^"//;s/"$//' > Bookmarks-New.txt
运行比较:
$ for URL in $(cat Bookmarks-Original.txt); do grep -q $URL Bookmarks-New.txt || echo $URL; done > Bookmarks-Discrep.txt
现在可以搜索原始的书签文件,提取原始的元数据,然后仔细地添加回新的书签文件中(首先备份最新文件),例如
{
"date_added": "13026268601621410",
[...]
"url": "https://wiki.mozilla.org/Security/Server_Side_TLS"
},
如果元数据不重要,则在“书签管理器”中为每个书签创建新书签并移至相关文件夹会更容易。