Sto cercando di trovare un modo per controllare all'interno di una determinata directory i file duplicati (anche con nomi diversi) e sostituirli con collegamenti simbolici che puntano alla prima occorrenza. Ho provato con fdupes
ma elenca solo quei duplicati.
Questo è il contesto: sto personalizzando un tema icona a mio piacimento, e ho scoperto che molte icone, anche se hanno nomi diversi e posizioni diverse all'interno della loro cartella genitore, e sono utilizzate per scopi diversi, sostanzialmente sono uguali immagine. Poiché applicare la stessa modifica venti o trenta volte è ridondante quando solo una è davvero necessaria, voglio mantenere solo un'immagine e collegare in modo simbolico tutte le altre.
Ad esempio, se corro fdupes -r ./
all'interno della directory testdir
, potrebbe restituirmi i seguenti risultati:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
Dato questo output, vorrei mantenere solo il file file1.png
, eliminare tutti gli altri e sostituirli con collegamenti simbolici che puntano su di esso, mantenendo tutti i nomi di file originali. Quindi file2.png
manterrà il suo nome, ma diventerà un collegamento file1.png
invece di essere un duplicato.
Tali collegamenti non dovrebbero puntare a un percorso assoluto, ma dovrebbero essere relativi alla testdir
directory principale ; cioè yetanotherfile.png
sarà punto ../../file1.png
, non a/home/testuser/.icons/testdir/file1.png
Sono interessato sia alle soluzioni che coinvolgono una GUI che alla CLI. Non è obbligatorio utilizzarlo fdupes
L'ho citato perché è uno strumento che conosco, ma sono aperto a soluzioni che utilizzano anche altri strumenti.
Sono abbastanza sicuro che uno script bash per gestire tutto ciò non dovrebbe essere così difficile da creare, ma non sono abbastanza esperto da scoprire come scriverlo da solo.
v1.51
(Ubuntu 14.04.2 LTS).