Carpeta de análisis para pares con bash o AppleScript

Edito fotos RAW en Photoshop usando Adobe Camera Raw. La forma en que funcionan las ediciones es que cada vez que trabajo en una imagen, Photoshop crea un archivo de texto con el mismo nombre que la imagen en la que se realizaron las ediciones. Sin embargo, a veces, cuando elimino una imagen o la uso en un Photomerge, el archivo XML se queda atrás. Por lo tanto, ahora tengo una carpeta con ~1100 imágenes RAW (.NEF), ~1300 archivos de texto (.xmp) y algunos archivos de Photoshop (.psd, .psb).

Me gustaría analizar esta carpeta, usando AppleScript o un comando bash, y marcar o eliminar los archivos .xmp que no tienen un archivo RAW complementario. Lógicamente, el código sería: para cada archivo .xmp, busque un archivo .NEF con el mismo nombre. Si .NEF no existe, elimine o marque el archivo .xmp. Si .NEF existe, no haga nada.

No estoy familiarizado con AppleScript, y aunque estoy familiarizado con ffmpeg, diskutil y los comandos básicos de cd/ls y rsync en la terminal, nunca he intentado algo como esto y no sé por dónde empezar.

Entonces, esperaba que alguien aquí pudiera:

  1. Ayude a decidir si bash o AppleScript es más apropiado aquí Y
  2. Ayúdame a escribir la secuencia O indícame algunos buenos recursos donde podría aprender lo suficiente (ya sea bash o AppleScript) para escribir la secuencia yo mismo.
Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .

Respuestas (1)

En Terminal, cambie el directorio, por ejemplo cd /path/to/files, a la ubicación de los archivos de destino y luego use el siguiente comando para eliminar cualquier .xmparchivo que no tenga un .NEFarchivo correspondiente:

for f in *.xmp; do [[ ! -f ${f%.*}.NEF ]] && rm "$f"; done
¡Esto funciona perfectamente! ¡Es mucho más fácil de lo que pensé que sería!
¿No "${f%.*}.xmp"sería lo mismo un "$f"?
@fd0, en este caso, sí, es lo mismo y, por supuesto, funciona de cualquier manera. Publiqué esto antes de haber tomado un café y estaba siendo perezoso copiando y pegando cambiando ${f%.*}.NEFa "${f%.*}.xmp". Lo he acortado ahora.
@ user3439894 Puntos extra por un buen uso de la ejecución diferida.