重複ファイルを見つけてシンボリックリンクに置き換える

重複ファイルを見つけてシンボリックリンクに置き換える

指定されたディレクトリに重複したファイル(名前が異なる場合でも)があることを確認し、最初のエントリを指すシンボリックリンクに置き換える方法を見つけようとしています。試してみましたが、重複したfdupes項目のみが一覧表示されます。
状況は次のとおりです。アイコンテーマを好きなようにカスタマイズしていますが、親フォルダで名前と場所が異なり、他の目的に使用されるアイコンが多いとしても基本的にすべて同じであることがわかりました。絵。同じ修正を20〜30回適用することは、実際には一度必要なときに重複するので、1つの画像のみを維持し、他の画像はすべてシンボリックリンクしたいと思います。

たとえば、fdupes -r ./ディレクトリで実行すると、testdir次の結果が返されることがあります。

./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png

file1.pngこの出力が与えられたら、ファイルのみを維持し、他のすべてのファイルを削除してから、すべての元のファイル名を保持しながら、そのファイルを指すシンボリックリンクに置き換えたいと思います。したがって、名前はそのまま残りますが、コピーではなくfile2.pngリンクになります。file1.png

これらのリンクは絶対パスを指してはならず、親ディレクトリを指している必要がtestdirあります。yetanotherfile.png../../file1.png/home/testuser/.icons/testdir/file1.png

私はGUIとCLIの両方を含むソリューションに興味があります。fdupes私が知っているツールなので必ずしも引用する必要はありませんが、他のツールを使うソリューションにも開いています。

私はこれらすべてを処理するbashスクリプトを作成することはそれほど難しくないと確信していますが、それを自分で書く方法を理解するのに十分な専門家ではありません。

ベストアンサー1

あまりにも多くのスクリプトが気に入らない場合はお勧めします。探す。指定したディレクトリから重複ファイルを検索し、それをハードリンクまたはシンボリックリンクに置き換えます。私はこれを使ってRuby gemsディレクトリの重複を正常に削除しました。 Debian/Ubuntu で使用できます。

おすすめ記事