je ne me rappelle plus quelle fonction bash permet de concaaténer pour obtenir une seule ligne quand ça commence pareil : d17e2eddfebe67eac290c8c499e6c15f 000001a009999/0001_0093/IMG_00020.JPG Z000001a009999/0001_0093/IMG_00020.JPG
et rien de spécial ( je préférerais rien du tout) quand on n’a pas de correspoindance de md5
PS
en fait, je cherche juste à avoir un fichier qui contient une partie de b.md5 correspondant aux fichiers existant dans a.md5
salut
ce qui est identique, c’est le md5 du fichier , pas la ligne du mds5um
fdupes fait en gros ce que je veux au final, mais je n’arrive pas toujours à ce qu’il détruise dans le dossier que je veux , donc je veux le faire à la main ( si je fais fdupes -d -N -r rep1/ rep2/ il peut détruire deux fichiers identiques dans rep1/ , parfois il garde celui dans rep2/ , il ne tient pas compte des sous-répertoires ( parfois je veux détruire rep2/a.jpg si rep1/a.jpg existe mais ne pas détruire rep2/dd/a.jpg si rep1/a.jpg existe …)
j’ai trouvé un début de solution ( pas ce que je cherchais ) :
il faut d’abord ranger les fichiers .md5 contenant les lignes créées par md5sum
puis : cat b.md5|sed 's# .*##'|while read ligne; do look "$ligne" a.md5 ;done
a.md5 est créé avec find dossier1 -type f |while read fich; do md5sum "$fich" >> a.md5 ; done
pour chaque ligne de b.md5, je met le md5 dans $md5; je regarde si le md5 est dans a.md5 et je met le résultat dans $res ;
si on a un résultat; alors je déplace le fichier $fich2 de b.md5 dans le dossier /tmp/aa/;
j’écris un log et un petit point pour être sur que ça tourne
pas génial car je suis obligé de relire le fichier a.md5 à chaque ligne de b.md5 mais ils ne font que quelques milliers de lignes.
les commandes paste et join font un peu ça :
paste a.txt b.txt : >c.txt ; la nième ligne de c.txt contient la nième ligne de a.txt suivi de la la nième ligne de b.txt
join a.txt b.txt : >c.txt ; si le premier champ de la nième ligne de a.txt et de b.txt contiennent la même chose , alors la nième ligne de c.txt aussi suivi de la nième ligne de a.txt suivi de la la nième ligne de b.txt
exemple :
si a.txt contient
1 a
10 aa
et b.txt
1 b
10 bb
alors
$ join a.txt b.txt
1 a b
10 aa bb
$ paste a.txt b.txt
1 a 1 b
10 aa 10 bb