すべての提案をテストした後、ブックマークマネージャーを使用して重複するブックマークをすべて手動で削除することが最も信頼できるようです(上記の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
すべての一意のURLのカウントを取得します。
$ 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"
},
メタデータが重要でない場合は、ブックマークマネージャーでそれぞれに新しいブックマークを作成し、関連するフォルダーに移動するだけで簡単です。