Estoy usando el programa de etiquetas ( enlace ) para copiar etiquetas de imágenes en un directorio a las imágenes con el mismo nombre en otro directorio.
Un comando que funciona desde la línea de comandos es este:
tag -s "Bass,CR Window,DrumKit,GaryHusband,Guitar,JohnMcLaughlin,Keys" /Users/michael/Dropbox/EOS5Diii/CF/./106EOS5D/2PBO1509.JPG
Un comando que falla es este:
find . -name 2PBO1509.JPG -a -exec sh -c 'tag -s \"'tag -lN "$1"'\" ~/Dropbox/EOS5Diii/CF/"$1"; if [ $? -ne 0 ]; then echo $1; fi' x {} \;
Falla con este mensaje / salida:
tag: The operation couldn’t be completed. (OSStatus error -43.)
./106EOS5D/2PBO1509.JPG
Lo que me resulta extraño es (1) que el script de búsqueda (cuando se usa el patrón * .JPG) funciona para miles de archivos en mi árbol de directorios. Pero falla en docenas. Cuando cambio la secuencia de comandos para simplemente repetir el comando que estoy tratando de ejecutar (usando el nombre de archivo que falló, dentro de la cadena principal de sh -c), recibo una recomendación que, cuando se copia y pega en la ventana del terminal, se realiza sin errores .
ACTUALIZACIÓN: Encontré que cuando hago eco de la cadena que normalmente se pasa a sh -c, encuentro que de hecho tengo comillas con barras invertidas (\ ") en lugar de comillas regulares ("). Así que he cambiado la secuencia de comandos para usar comillas más simples (ninguno de mis nombres de archivos tiene espacios en ellos) y ahora los errores están resueltos.
Lo que me confunde es por qué a veces esto falla en lugar de fallar siempre. ¿Pensamientos?