Estoy intentando crear un Automator Servicio para Buscador El menú contextual del botón derecho del ratón puede dividir cualquier archivo csv seleccionado, copiando al mismo tiempo la cabecera original en la parte superior de cada archivo.
Mi intento actual es hacer que Automator ejecute este Bash Shell script :
#!/bin/bash
FILE=$(ls -1 | grep MY_CSV_FILE.csv)
NAME=${FILE%%.csv}
head -1 $FILE > header.csv
tail -n +2 $FILE > data.csv
split -l 50 data.csv
for a in x??
do
cat header.csv $a > $NAME.$a.csv
done
rm header.csv data.csv x??
Este script dividirá MY_CSV_FILE.csv
en nuevos archivos con un máximo de 50 líneas mientras se copia la cabecera original en la parte superior de cada archivo. Los nuevos archivos tendrán el nombre original añadido con xaa
, xab
, xac
etc.
En cuanto a la configuración de Automator, este es el Servicio en el que estoy trabajando actualmente. El problema ahora mismo es que no puedo pasar el Archivo Seleccionado en Finder al Bash script.
Fíjate en eso:
- El servicio lo recibe: archivos o carpetas en Finder.app .
- Pasa la entrada al Shell script: como argumentos .
- He eliminado
#!/bin/bash
desde la parte superior de la Shell script y pon la Shell en: /bin/bash . - Cambié
MY_CSV_FILE.csv
para"$f"
- No estoy seguro de que eso sea correcto.
¿También tengo que especificar la ruta usando algo como "$@"
tanto para el archivo de entrada como para los archivos de salida resultantes? No he hecho algo como esto antes, así que no estoy muy familiarizado con esa variable y "$f"
para el caso.
¿Cómo puedo hacer que esto funcione? Me gustaría que los archivos resultantes aparecieran en la misma carpeta que el archivo que selecciono para ejecutar el Servicio, a través del menú del botón derecho del Finder. Sería aún mejor si el Servicio sólo aceptara archivos csv.