Je dois créer à la fois des versions TIF et JPG d'un grand ensemble d'images.
Toutes les images JPG existent déjà, mais seulement une partie des images TIF. Existe-t-il un moyen simple de rechercher dans un répertoire tous les fichiers JPG n’ayant pas de fichier TIF correspondant (c’est-à-dire un fichier du même nom mais avec une extension différente)?
macos
shell-script
Anders Svensson
la source
la source
Réponses:
Perl one-liner:
En 63 caractères:
la source
En supposant que toutes les images sont dans le
images
répertoire et a la.jpg
suffixe, le petit script suivant imprimera tous les fichiers d’image n’ayant pas de correspondance.tif
fichier sur UNIX:Collez-le dans un fichier et enregistrez-le dans un dossier situé au-dessus de celui dans lequel vos images sont stockées. Vous pourriez l'appeler
find-images
. Par exemple:Ouvert Utilitaires / Terminal.app et utiliser le
cd
commande pour accéder au dossier où se trouve votre script, par exemple. si le script est sur votre bureau, entrez simplementcd Desktop
.Puis entrez
chmod +x find-images
. Maintenant, vous pouvez exécuter le script en appelant simplement./find-images
.la source
Je vais utiliser Python, car il est multi-plateforme. Commencez par placer vos fichiers jpg et tif dans des dossiers distincts.
Enregistrez ensuite ce script dans un fichier, quelque part sur votre disque dur, éventuellement sous le nom
find-images
.Ouvert Utilitaires / Terminal.app et entrez
python /path/to/file
. Par exemple, si vous l’avez sauvegardé sur votre bureau, ce seraitpython ~/Desktop/find-images
(puisque~
est un raccourci vers votre dossier personnel). Ici, vous pouvez courir une explication plus détaillée sur l'exécution de fichiers Python sur votre Mac.la source
[item.rsplit(".", 1)[0] for item in os.listdir(jpgPath)]
...python
dans Terminal et collez le code ci-dessus.Ah, j'ai eu envie d'ajouter ceci. Voici la solution Ruby, qui imprime toutes les images sans contrepartie TIF:
Placez-le dans un fichier qui se trouve dans le même dossier que vos images, enregistrez-le sous.
find-images
et exécutez-le dans Terminal en entrantruby find-images
.Si vous ne connaissez pas Ruby, ne demandez pas comment cela fonctionne, cela peut prendre un certain temps pour expliquer: P
la source
a0, a1 = ARGV[0], ARGV[1]; dir0 = Dir["*.#{a0}"]; dir1 = Dir["*.#{a1}"]; dir0.each {|f| puts f unless dir1.include?(f.sub(/\.#{a0}$/, ".#{a1}"))}
diffext
cd somedir; diffext jpg tif
la source
One-Liner (s) sans perl:
Avec using while loop after find:
Avec l'utilisation de (beaucoup de) sous-coques:
la source
diffexts() { find "$PWD" -name "*.$1" | while read f; do [[ ! -e ${f%.$1}.$2 ]] && echo "$f"; done; }