Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Linux : recherche de fichiers en doublons

De AJLSM
Version datée du 18 juillet 2023 à 10:50 par Jlarvers (discussion | contributions)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Il existe plusieurs méthodes pour lister des doublons.

Cf. https://www.easeus.fr/recherche-doublons/linux-trouver-les-fichiers-en-double.html

On traite ici de deux méthodes :

Recherche par noms identiques

[modifier | modifier le wikicode]

Créer un fichier contenant le script suivant :

Par exemple : recherchedoublons.sh

awk -F'/' '{
  
  f = $NF

  a[f] = f in a? a[f] RS $0 : $0

  b[f]++ } 

  END{for(x in b)

        if(b[x]>1)

          printf "Nom de fichier identique : %s\n%s\n",x,a[x] }' <(find . -type f)

Ce script (rendre exécutable) se lance à la racine du répertoire que l'on souhaite analyser.

Le résultat liste le fichier dupliqué et le PATH du ou des doublons pour ce fichier.

Exemple :

./recherchedoublons.sh

Résultat :

Nom de fichier identique : FRAD044_1113W.xml
./Ir_pleade/Contemporain/Travail_emploi_formation/FRAD044_1113W.xml
./Ir_pleade/Contemporain/Education/FRAD044_1113W.xml
Nom de fichier identique : FRAD044_1103W.xml
./Ir_pleade/Contemporain/Travail_emploi_formation/FRAD044_1103W.xml
./Ir_pleade/Contemporain/Education/FRAD044_1103W.xml
Nom de fichier identique : FRAD044_1556W.xml
./Ir_pleade/Contemporain/Travail_emploi_formation/FRAD044_1556W.xml
./Ir_pleade/Contemporain/Education/FRAD044_1556W.xml
...

Recherche de fichiers strictement identiques

[modifier | modifier le wikicode]

On utilise les sommes MD5 pour lister les fichiers doublonnés.

Créer un fichier contenant ce script :

Par exemple : recherchedoublonsMD5.sh

# cat recherchedoublonsMD5.sh
#!/bin/bash

function preRequis {
        for arg in $@; do
                if ! which $arg >/dev/null; then
                        logger -t $0 La commande $arg n\'est pas installée
                        echo "La commande $arg n'est pas installée !!!"
                        echo "Fin du script."
                        exit 1
                fi
        done
}

logger -t $0 Exécution du script

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

preRequis md5sum sort awk uniq grep cut find

if [ ! $# -eq 1 ]; then
        echo "Erreur !!!"
        echo "Utilisation : $0 répertoire"
        exit 1
fi

FILE="/tmp/filesMd5sum"
REP="$1"

if [ ! -d "$REP" ]; then
        echo "Erreur !!!"
        echo "$REP n'est pas un répertoire."
        exit 1
fi

rm -f "$FILE"

find "$REP" -type f -exec md5sum -b {} \; > "$FILE"

DOUBLON=0

for file in $(cat "$FILE" | sort | awk '{print $1}' | uniq -d); do
        DOUBLON=1
        echo "Empreinte MD5 identique : $file"
        grep $file "$FILE" | cut -d' ' -f2
done

if [ "$DOUBLON" -eq 0 ]; then echo "Aucun doublon trouvé"; fi

logger -t $0 Fin d\'exécution du script

exit 0

Ce script (rendre exécutable) se lance en précisant le PATH du répertoire que l'on souhaite analyser.

Le résultat liste le fichier dupliqué et le PATH du ou des doublons pour ce fichier.

Exemple :

./recherchedoublonsMD5.sh /var/data/ad44-data/pleade/internet/ead/

Résultats :

Empreinte MD5 identique : 298ef58ef6ea56fbd012e9022de617cd
*/var/data/ad44-data/pleade/internet/ead/Ir_pleade/Contemporain/Ancien_combattant/FRAD044_1648W.xml
*/var/data/ad44-data/pleade/internet/ead/Ir_pleade/Contemporain/Conseil_general/FRAD044_1648W.xml
Empreinte MD5 identique : 343299e6c414d735b7a1c1daadb5b9ae
*/var/data/ad44-data/pleade/internet/ead/Ir_pleade/Contemporain/Ancien_combattant/FRAD044_1339W.xml
*/var/data/ad44-data/pleade/internet/ead/Ir_pleade/Contemporain/Conseil_general/FRAD044_1339W.xml
...