Mon problème est que, pour une raison quelconque, j'ai des copies de certaines pistes de musique. Cependant, ils ne portent pas le même nom. Par exemple:
Music/Prefuse 73/Un mot extincteur/07. Detchibe.mp3
Et
Musique/Prefuse 73/One Word Exttinguisher/07 - Detchibe.mp3
Notez que ce sont des morceaux en double mais le 07 * . * & le 07 - trompe les chercheurs de doublons qui effectuent une recherche par fichier des noms.
J'ai trouvé une chaîne de commande assez simple. Merci beaucoup à @Oli.
fdupes -rf --quiet ~/Desktop/Dupes2/ | while read i; do mv "$i" ~/Desktop/Dupes/ ; done
Ceci utilisait fdupes
pour rechercher récursivement (-r
) les dupes, en omettant le premier (-f
). Bash lit ceci ligne par ligne à travers read
AMD remet chaque ligne à mv
pour déplacer tous les doublons dans un autre répertoire. Notez l'utilisation de guillemets dans la boucle while
pour gérer les espaces et autres signes de ponctuation louche que fdupes
ne gérera pas (même avec -1
/--sameline
).
Vous pouvez utiliser fdupes
comme réponse à la question "Comment trouver et supprimer des fichiers en double" suggéré. Laissez-moi vous donner un exemple:
mkdir -p "Music/Prefuse 73/One Word Extinguisher/"
dd if=/dev/urandom of=Music/Prefuse\ 73/One\ Word\ Extinguisher/07.Detchibe.mp3 bs=1023 count=2048
2048+0 records in
2048+0 records out
2095104 bytes (2.1 MB) copied, 0.379806 s, 5.5 MB/s
cp Music/Prefuse\ 73/One\ Word\ Extinguisher/07.Detchibe.mp3 Music/Prefuse\ 73/One\ Word\ Extinguisher/"07 - Detchibe.mp3"
fdupes -rd .
[1] ./Music/Prefuse 73/One Word Extinguisher/07.Detchibe.mp3
[2] ./Music/Prefuse 73/One Word Extinguisher/07 - Detchibe.mp3
Set 1 of 1, preserve files [1 - 2, all]:
J'ai d'abord créé le répertoire comme dans votre exemple. J'ai créé un fichier à partir de données aléatoires et copié son contenu dans un autre fichier. Lorsque je lance fdupes -rd
, le logiciel trouve les deux fichiers exacts et demande lequel il convient de supprimer.
Si vous avez beaucoup de fichiers, vous pouvez utiliser l'option -1
. fdupes
imprimera tous les doublons sur une seule ligne. Vous pouvez les traiter avec xargs
et d'autres fonctionnalités de Shell.
Dans les réponses à Définir manuellement le nombre d'écoute de piste dans Banshee? , il décrit comment accéder à la base de données utilisée par Banshee pour enregistrer toutes les informations de piste.
Une fois que vous êtes connecté à la base de données, collez
select tweaked_track, count(*) from
(select replace(replace(replace(title, ' ', ''), '-', ''), '.', '') as tweaked_track
from coretracks)
group by tweaked_track
order by 2, 1 desc;
dans la zone de chaîne SQL, puis cliquez sur 'Exécuter la requête'. Cela vous montrera toutes les pistes que vous avez avec le même titre en ignorant les espaces, les tirets et les points. Si vous souhaitez ignorer d'autres caractères, ajoutez-les à la requête de la même manière. (IE ajoute replace(
avant le premier "remplacer" existant et après le dernier ")" sur cette ligne, ajoutez , '[character you want removed]', '')
.
(Je ne sais pas ce que vous savez sur SQL - si vous avez besoin de plus de détails, postez un commentaire.)
Cela vous donnera une liste de titres. Vous devrez réellement supprimer vous-même.
Il y a peut-être une meilleure façon de le faire, mais s'il y en a, je ne le sais pas.
Une fois que vous avez une grande liste de fichiers à supprimer (de ma méthode ou de fdupes
comme d'autres l'ont mentionné), placez la liste des fichiers à supprimer dans un répertoire texte. Assurez-vous que l'une des conditions suivantes est vraie:
Option n ° 1: les noms de fichiers contiennent un chemin complet. Par exemple, le fichier peut contenir:
/home/doneill/music/weird_al/duped_file.mp3
/home/doneill/music/weird_al/another_dupe.mp3
/home/doneill/music/bach/baroque_dupe.mp3
Option n ° 2: les noms de fichiers contiennent un chemin relatif et le fichier contenant la liste des noms de fichiers est enregistré dans le dossier parent. Par exemple, si votre liste de fichiers a été enregistrée dans /home/doneill/music/
, elle contiendrait:
weird_al/duped_file.mp3
weird_al/another_dupe.mp3
bach/baroque_dupe.mp3
Dans les deux cas, ouvrez une fenêtre de terminal et accédez au dossier contenant le fichier avec la liste cd /home/doneill/music/
par exemple.
Tapez:
for a in `cat filelist.txt`; do echo $a; done
(Remplacement de filelist.txt par le nom du fichier avec la liste). Cela devrait cracher une liste de tous les fichiers que vous souhaitez supprimer. Prenez un moment pour vérifier la liste. Si c'est le cas, tapez:
for a in `cat filelist.txt`; do rm $a; done
Cela indique essentiellement à votre ordinateur: pour chaque ligne du fichier filelist.txt
, supprimez un fichier portant le nom indiqué.