Sélection de fichiers avec une extension portant le même nom que des fichiers avec une extension différente

1

J'ai deux dossiers d'images. Dans un dossier, il y a .JPGs, par exemple.

  • 001.jpg
  • 002.jpg
  • 003.jpg
  • 004.jpg
  • 005.jpg
  • 006.jpg
  • 007.jpg
  • 008.jpg

dans l'autre dossier, il y a .NEF s. Cependant, certains des .NEF s ont été supprimés, donc il y a par exemple

  • 001.nef
  • 003.nef
  • 004.nef
  • 005.nef
  • 008.nef

Les jpgs et les nefs se correspondent - ce sont la même photo prise en même temps avec les mêmes données efix (sauvegardées sur deux cartes mémoire séparées)

Ce que je veux faire, c'est sélectionner les fichiers .JPG qui correspondent aux fichiers .NEF restants. Dans l'exemple ci-dessus, je veux sélectionner JPGs 1,3,4,5,8 mais pas les autres. J'ai en fait environ 400 jpgs et 800 nefs.

J'ai essayé d'utiliser des applications de comparaison de dossiers telles que VisualDiffer, mais elles ne semblent fonctionner que si vous utilisez le même nom de fichier complet + extension.

Est-ce que quelqu'un sait comment il pourrait être possible d'atteindre cet objectif dans finder ou en utilisant un terminal? ou alternativement avec une application différente?

J'utilise Mac OSX 10.6.8

Merci!

Rich
la source
1
Que voulez-vous faire avec les fichiers une fois qu'ils sont sélectionnés?
nohillside

Réponses:

2

Ouvrez terminal et utilisez cd pour que le répertoire de fichiers * .nef devienne votre répertoire actuel. Supposons que vous ayez cette structure:

mydir / jpeg dir dir / nedir

Donc, cd dans dir / nedir

Ensuite:

mkdir newdir
for file in *.nef; do 
    root=${$file%.nef}; 
    jpeg=${root}.jpg; 
    mv ../jpegdir/${jpeg} ./newdir/
done

exemple ci-dessous. Notez ici que je mets "echo" devant la commande mv. Vous voulez l'omettre, mais je l'utilise souvent quand je vérifie qu'un script fait ce que j'attendais avant de l'exécuter. De plus, vous ne dites pas ce que vous voulez faire avec les fichiers, mais les déplacer dans un nouveau dossier vous permet de les sélectionner et vous pouvez toujours les déplacer tous en arrière. J'ai aussi raccourci mes noms de variables tmp.

$ ls -R
total 0
drwxrwxr-x  4 tim  staff  136 Jun 13 08:02 .
drwx------  9 tim  staff  306 Jun 13 08:02 ..
drwxrwxr-x  8 tim  staff  272 Jun 13 08:03 jpegdir
drwxrwxr-x  5 tim  staff  170 Jun 13 08:03 nefdir

./jpegdir:
total 0
drwxrwxr-x  8 tim  staff  272 Jun 13 08:03 .
drwxrwxr-x  4 tim  staff  136 Jun 13 08:02 ..
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo1.jpeg
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo2.jpeg
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo3.jpeg
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo4.jpeg
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo5.jpeg
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo6.jpeg

./nefdir:
total 0
drwxrwxr-x  5 tim  staff  170 Jun 13 08:03 .
drwxrwxr-x  4 tim  staff  136 Jun 13 08:02 ..
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo2.nef
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo3.nef
-rw-rw-r--  1 tim  staff    0 Jun 13 08:03 foo5.nef

$ cd nefdir/
$ mkdir newdir/

$ for f in *.nef; do g=${f%.nef}; h=$g.jpeg; echo mv ../jpegdir/$h ./newdir; done
mv ../jpegdir/foo2.jpeg ./newdir
mv ../jpegdir/foo3.jpeg ./newdir
mv ../jpegdir/foo5.jpeg ./newdir
Tim B
la source