mdfind canalizado al automatizador?

0

Tengo una aplicación Automator llamada convert2xlsx.app que toma entradas de archivos y ejecuta la acción Convertir formato de archivos de Excel para convertir archivos .xls en archivos .xlsx. Puedo llamarlo desde la línea de comandos para un archivo así:

automator -i "some file name.xls" ~/Desktop/convert2xlsx.app

y funciona bien.

También tengo una consulta de línea de comandos como esta:

mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls'

que encuentra todos los archivos .xls en el directorio de trabajo y debajo.

Realmente me gustaría casarme con los dos, pero parece que no consigo que funcione.

Mi primer pensamiento fue este:

mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls' | xargs -J {} automator -i "{}" ~/Desktop/convert2xlsx.app

pero eso solo convierte el último archivo en los resultados devueltos por mdfind. También probé:

mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls' -0 | xargs -0 -J {} automator -i "{}" ~/Desktop/convert2xlsx.app

con el mismo resultado.

Pude armarlo en Automator, usando una acción de AppleScript para obtener el directorio de la ventana del Finder frontal, una acción de Shell Script para ejecutar el mdfind en ese directorio y luego el Formato de conversión de los archivos de Excel en el resultado de el mdfind. Por lo tanto, el problema resuelto. ¡Hurra! Pero ...

Realmente me gustaría saber dónde me estaba yendo mal en la línea de comandos, ya que estoy haciendo un esfuerzo para aprender Bash y usarlo más. ¿Algún consejo?

    
pregunta Patrick Wynne 01.01.2015 - 05:41

1 respuesta

1

Como prueba, creé una aplicación Automator que simplemente copia los elementos del buscador a un directorio. Acción "Copiar elementos del Finder"

Y luego se usa

theFind='mdfind -onlyin . 'kMDItemContentType == com.microsoft.excel.xls'';automator -i "$theFind"  /Users/UserName/Desktop/testF/test2.app

Los backpicks "" "aseguran que el primer resultado de los comandos se coloque en la variable theFind y luego podemos pasar theFind al siguiente comando llamándolo con" $ theFind ". Las citas a su alrededor también están seguras de que cualquier texto pasado se cita.

A la aplicación Automator se le pasa una lista de alias.

  

{alias "disco duro: Usuarios: Nombre de usuario: Dropbox: Kit: Unit2.xls", alias "duro   drive: Usuarios: Nombre de usuario: Dropbox: Kit: Unit3.xls "}

Por lo tanto, dependiendo de sus otras acciones, es posible que deba convertirlas a rutas POSIX.

  

{"/Users/Username/Dropbox/Kit/Unit2.xls", "/Users/Username/Dropbox/Kit/Unit3.xls"}

    
respondido por el markhunte 01.01.2015 - 15:44

Lea otras preguntas en las etiquetas