Seleccionar archivos con una extensión que tenga el mismo nombre que los archivos con una extensión diferente

1

Tengo dos carpetas de imágenes. En una carpeta hay .JPGs , por ejemplo,

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

en la otra carpeta, hay .NEF s. Sin embargo, algunos de los .NEF s se han eliminado, por lo que hay, por ejemplo,

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

Los jpgs y nefs se corresponden entre sí: son la misma fotografía tomada al mismo tiempo con los mismos datos de efix (guardados en dos tarjetas de memoria separadas)

Lo que quiero hacer es seleccionar los .JPG que se correspondan con los .NEF restantes. En el ejemplo anterior, quiero seleccionar JPG 1,3,4,5,8 pero no los demás. De hecho, tengo alrededor de 400 jpgs y 800 nefs.

He intentado usar aplicaciones de comparación de carpetas como VisualDiffer, pero parece que solo funcionan si estás usando el mismo nombre de archivo completo + extensión.

¿Alguien sabe cómo podría ser posible lograr esto en el buscador o usando el terminal? o alternativamente con una aplicación diferente?

Estoy usando Mac OSX 10.6.8

¡Gracias!

    
pregunta Rich 13.06.2013 - 13:53

1 respuesta

2

Abra el terminal y use cd para hacer que el directorio de los archivos * .nef sea su directorio actual. Supongamos que tiene esta estructura:

mydir / jpegdir mydir / nefdir

Entonces cd en mydir / nefdir

Entonces:

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

ejemplo a continuación. Tenga en cuenta que puse "echo" delante del comando mv. Quieres omitir eso, pero a menudo lo uso cuando estoy comprobando que un script está haciendo lo que esperaba antes de ejecutarlo. Tampoco dice qué quiere hacer con los archivos, pero al moverlos a una nueva carpeta le permite seleccionarlos, y siempre puede moverlos hacia atrás. También acorté mis nombres 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
    
respondido por el Tim B 13.06.2013 - 14:09

Lea otras preguntas en las etiquetas