-1
votes

Trouvez des fichiers en double par leur préfixe (pas hachage)

Si j'ai 2 fichiers où l'on est: xxx

l'autre: xxx

et ce sont les mêmes fichiers où Exemple fdupes. ne les reconnaît pas comme des duplicats.

Comment correspondre-je au format temporel et imprimez-les comme des doublons possibles?


4 commentaires

Qu'entendez-vous par «mêmes fichiers»? Leur contenu est-il pareil? Ou vous voulez juste les faire correspondre par l'horodatage indépendamment de leur contenu?


Les fichiers @choroba sont légèrement différents, ce qui signifie que je ne peux pas comparer leurs hatus. Ce que je veux, c'est d'imprimer ces 2 noms de fichiers car le préfixe (tout jusqu'à -A , -b est identique)


Stackoverflow.com/help/minimal-reproductible-example


@Bryank Bien que je conviens qu'il devrait y avoir au moins un "exemple de reproductible minimal", je pense que j'ai bien expliqué ce dont j'ai besoin dans mon exemple.


3 Réponses :


0
votes

Vous pouvez parcourir les fichiers A et rechercher les fichiers B correspondants: xxx pré>

Vous pouvez également utiliser comm code> pour traiter les listes d'a- fichiers et fichiers B. Les fichiers B sont modifiés pour ressembler à des fichiers A, de sorte que COMM rapporte la sortie dans trois colonnes: 1. Fichier B non trouvé, 2. A-fichier non trouvé, 3. Les deux fichiers existent. P>

comm <(ls ????-??-??-??_??_??-a.jpg) \
     <(ls ????-??-??-??_??_??-b.jpg | sed 's/-b\.jpg/-a.jpg/')


5 commentaires

Je ne trouve pas avec le script Bash ci-dessus, bien qu'il y ait des fichiers -a et -b. Les déclarations d'autre ne doivent-elles pas être inversées?


Ça marche pour moi. J'ai initialement eu une faute de frappe dans le script, vérifiez que vous avez la dernière version.


toujours introuvable avec ces 2 fichiers dans le dossier LS -> 2020-07-03-21_56_51-03-21_56_52-b.jpg -> non trouvé non trouvé trouvé le fichier B pour 2020-07-03-21_56_51-A.jpg


Oui, c'est attendu, 51! = 52.


Vous avez raison, j'ai fait erreur quand j'ai essayé de reproduire ma première tentative. Mais j'ai essayé moi encore maintenant et plusieurs fois avant et je reçois toujours non trouvé



2
votes

Le format temporel que vous avez montré forme un préfixe long de 19 caractères sur un nom de fichier. Si nous supposons que vous n'avez pas besoin de manipuler d'autres préfixes, vous pouvez tuyer la liste de tels fichiers sur le script PERL suivant comme ls * .jpg | perl first19match.pl .

enregistrer le code suivant dans le fichier nommé premier19match.pl xxx

Le programme imprime chaque groupe de fichiers avec le même préfixe dans un paragraphe différent. Pour l'entrée: xxx

La sortie est la suivante: xxx


0 commentaires

2
votes

Vous pouvez essayer un Perl One Dower qui appuie la liste des fichiers dans une liste de hachage basée sur l'horodatage avant le "_" dans le nom de fichier xxx


0 commentaires