0
votes

Supprimer le fichier XML qui n'a pas de fichier JPG correspondant

J'ai un dossier contenant des images et des fichiers XML avec les mêmes noms

donc un exemple sera xxx

et ainsi sur

Je souhaite supprimer des fichiers XML qui n'ont pas leurs fichiers JPG correspondants

Tous les fichiers sont dans le même dossier.

OS - Ubuntu 16.04 LTS


5 commentaires

Qu'essayez-vous? Comment vos efforts ont-ils échoué?


Je suis Newbie avec Bash Scripting, alors ce que j'ai fait était d'utiliser l'interface graphique. J'ai zoomé jusqu'à ce que ne puisse voir que le XML et le JPG ensemble. Mais il y a 1000+ images si manuellement qu'il va prendre beaucoup de temps


Aussi, j'ai trouvé cela Stackoverflow.com/questions/34489948/...


Mais il fait le contraire de ce qu'il est censé


Avez-vous un répertoire imbriqué ou non?


3 Réponses :



0
votes

Ce code Python peut vous aider, il vous suffit de modifier la variable du chemin.

import os
from tqdm import tqdm

path = 'your path'

files = os.listdir(path)

for file in tqdm(files):
    filename, filetype = file.split('.')
    if filetype == 'xml':
        continue

    imgfile = os.path.join(path, file)
    xmlfile = os.path.join(path, filename + '.xml')
    if not os.path.exists(xmlfile):
        print('{} deleted.'.format(imgfile))
        os.remove(imgfile)


0 commentaires

1
votes

Techniquement, vous pouvez résoudre votre problème de cette manière, quelle que soit la ligne de commande ou toute langue de script

première trouvée et une liste séparée de XML code> fichier et jpg code> H3>
perl -MFile::Find -le 'find(sub{ ($_=$File::Find::name) && push(@xml,$_) }, "." ); END{ s/xml$/jpg/ && print -e $_ || (s/jpg$/xml/) &&  print $_ for @xml}'
1
./all-xml           # ./all.jpg does not exist, yes it is our file
1
1
1
1
1
1
1
./one/D.xml         # ./one/D.jpg does not exist so this file should be deleted 
1
1
1
1
1


0 commentaires