Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Linux : recherche de fichiers en doublons
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
...