Supprimer des doublons d'une liste en PERL
NMalo
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
J'aimerais supprimer des fichiers doublons dans une recherche récursive de mes répertoires.
J'ai trouvé ceci, mais cela ne fonctionne pas.
Par défaut, je ne peux créer un fichier qui a le même nom dans le même dossier (Linux gentoo) mais le même fichier dans deux dossiers différents n'est pas "repéré" et supprimé.
La partie sensé me supprimer les doublons :
Le résultat :
/home/NMalo/Temp/Zoulou2
/home/NMalo/Temp/Pas_vide_3
/home/NMalo/Temp/Y
/home/NMalo/Temp/Pas_vide_2
/home/NMalo/Temp/Un
/home/NMalo/Temp/Zoulou1
/home/NMalo/Temp/X
/home/NMalo/Temp/Pas-vide_1
/home/NMalo/Temp/Deux
/home/NMalo/Temp/Pas_vide_4
/home/NMalo/Temp/Zoulou/Zoulou2
/home/NMalo/Temp/Zoulou/Zoulou1
Zoulou1 & Zoulou2 devraient être supprimés car ceux sont les mêmes (type, nom et contenu).
Merci de votre aide.
J'aimerais supprimer des fichiers doublons dans une recherche récursive de mes répertoires.
J'ai trouvé ceci, mais cela ne fonctionne pas.
Par défaut, je ne peux créer un fichier qui a le même nom dans le même dossier (Linux gentoo) mais le même fichier dans deux dossiers différents n'est pas "repéré" et supprimé.
La partie sensé me supprimer les doublons :
sub doublons_grep { my ($ref_tabeau) = @_; my %hash_sans_doublon; return grep { !$hash_sans_doublon{$_}++ } @{$ref_tabeau}; }
Le résultat :
/home/NMalo/Temp/Zoulou2
/home/NMalo/Temp/Pas_vide_3
/home/NMalo/Temp/Y
/home/NMalo/Temp/Pas_vide_2
/home/NMalo/Temp/Un
/home/NMalo/Temp/Zoulou1
/home/NMalo/Temp/X
/home/NMalo/Temp/Pas-vide_1
/home/NMalo/Temp/Deux
/home/NMalo/Temp/Pas_vide_4
/home/NMalo/Temp/Zoulou/Zoulou2
/home/NMalo/Temp/Zoulou/Zoulou1
Zoulou1 & Zoulou2 devraient être supprimés car ceux sont les mêmes (type, nom et contenu).
Merci de votre aide.
A voir également:
- Supprimer des doublons d'une liste en PERL
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Supprimer une page word - Guide
- Liste déroulante en cascade - Guide
- Doublons photos - Guide
1 réponse
Salut,
Zoulou1 & Zoulou2 devraient être supprimés car ceux sont les mêmes (type, nom et contenu).
Ben, non. J'ai mis les chaînes en gras.
Les fichiers ont peut être le même nom, mais le chemin est différent.
Si tu veux supprimer les fichiers doublon sans tenir compte de chemin alors il faudrait modifier ton code.
/home/NMalo/Temp/Zoulou2
/home/NMalo/Temp/Pas_vide_3
/home/NMalo/Temp/Y
/home/NMalo/Temp/Pas_vide_2
/home/NMalo/Temp/Un
/home/NMalo/Temp/Zoulou1
/home/NMalo/Temp/X
/home/NMalo/Temp/Pas-vide_1
/home/NMalo/Temp/Deux
/home/NMalo/Temp/Pas_vide_4
/home/NMalo/Temp/Zoulou/Zoulou2
/home/NMalo/Temp/Zoulou/Zoulou1
lami20j
Zoulou1 & Zoulou2 devraient être supprimés car ceux sont les mêmes (type, nom et contenu).
Ben, non. J'ai mis les chaînes en gras.
Les fichiers ont peut être le même nom, mais le chemin est différent.
Si tu veux supprimer les fichiers doublon sans tenir compte de chemin alors il faudrait modifier ton code.
/home/NMalo/Temp/Zoulou2
/home/NMalo/Temp/Pas_vide_3
/home/NMalo/Temp/Y
/home/NMalo/Temp/Pas_vide_2
/home/NMalo/Temp/Un
/home/NMalo/Temp/Zoulou1
/home/NMalo/Temp/X
/home/NMalo/Temp/Pas-vide_1
/home/NMalo/Temp/Deux
/home/NMalo/Temp/Pas_vide_4
/home/NMalo/Temp/Zoulou/Zoulou2
/home/NMalo/Temp/Zoulou/Zoulou1
lami20j
Je comprend mieux pourquoi aucune façon ne fonctionne alors ><
Et je n'ai pas pu tester sur le même dossier car je ne peux pas crer un fichier doublon.
Donc oui c'est bien ce que je souhaite réaliser, que dois-je modifier s'il te plait? Merci.
Modifier la variable du tableau avec les chemins en lui indiquant de ne prendre que le fichier de chaque chemin? Si oui comment? merci.
PS : je souhaiterais éviter les modules (genre CPAN). Merci
Je vais regarder ce soir et je vais te donner un exemple, d''accord?
Désolé d'avoir répondu avec insistance :s
Bonne après-midi à toi.
Les doublons selon le nom (sans le chemin) on pourrait facilement l'éliminer de la liste (sans module cpan en revanche on peut utiliser des modules standard si besoin).
La question est lequel?
Prenons le cas de Zoulou1 qui semble le même fichier par rapport au nom.
/home/NMalo/Temp/Zoulou1
/home/NMalo/Temp/Zoulou/Zoulou1
Lequel ont doit supprimer?
Vérifier donc que les deux fichiers sont identiques et dans quel cas, supprimer le fichier le plus récent :s
Donc, dans le cas de :
/home/NMalo/Temp/Zoulou1
/home/NMalo/Temp/Zoulou/Zoulou1
Il faudrait en plus aller vérifier leur date de création et supprimer le dernier crée.
Si tu as trouvé une solution pour la vérification par nom, ça m'intéresse quand même pour l'appliquer sur des dossiers.
Au passage (je vais chercher ça mais si tu as la réponse je gagnerais du temps) existe t il une fonction File::Find::Name mais pour les Dossier? (rapidement recherché Directory::Find:Name mais rien trouvé). Merci