Quiero crear un servicio usando Automator para ejecutar un shell script en todos los archivos de una carpeta, digamos que eliminar todos los archivos de registro. Lo que he hecho es
- Creé un nuevo servicio en Automator.
- Se ha añadido una acción "Ejecutar Shell script". Por ahora he cambiado esto por 'pwd'.
- Se ha seleccionado "El servicio recibe las carpetas seleccionadas".
- He intentado ejecutarlo, pero me sale un mensaje. "Para probar este servicio dentro de Automator, añada la acción "Obtener elementos del buscador especificados" al principio de su flujo de trabajo. Elimine o desactive la acción antes de ejecutar el flujo de trabajo fuera de Automator.
- BIEN. Así que añado "Obtener elementos del buscador especificados". Agrego un directorio "de prueba" a la lista de elementos.
Ahora, cuando ejecuto el script, la ventana de resultados imprime mi directorio personal.
En otro lugar, he leído que tal vez tenga que añadir
cd "$1"
al principio de mi script. Lo he hecho pero sigue imprimiendo mi directorio personal. ¿Cómo consigo que esta cosa imprima el directorio que he seleccionado en "Obtener elementos especificados del buscador"?
Editado para añadir
Aquí hay una captura de pantalla de un script que funciona.
Aquí hay una captura de pantalla de un script que no funciona.
La forma habitual de tratar el error "no match found : *.log" sería redirigir la salida de error a null. Sustituyendo la línea "rm" por
find . -name "*.log" -print0 | xargs -0 rm -rf
Sin embargo, funciona. Esto parece más difícil de lo que debería ser.