Estoy tratando de crear un Automator Service para el Finder del menú contextual del botón derecho que puede dividir cualquier archivo csv seleccionado, mientras copiando en el encabezado original en la parte superior de cada archivo.
Mi intento actual es hacer que Automator ejecute esta secuencia de comandos Bash Shell :
#!/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 archivos nuevos con un máximo de 50 líneas mientras se copia en el encabezado original en la parte superior de cada archivo. Los nuevos archivos tendrán el nombre original adjunto con xaa
, xab
, xac
etc.
Con respecto a la configuración de Automator, este es el servicio en el que estoy trabajando actualmente. El problema ahora es que no puedo pasar el archivo seleccionado en Finder al script Bash.
Noteque:
- Elserviciorecibe:archivosocarpetasenFinder.app.
- PaselaentradaalscriptdeShell:comoargumentos.
- Heeliminado
#!/bin/bash
delapartesuperiordelasecuenciadecomandosdeShellylaheconfiguradocomo:/bin/bash. - Cambié
MY_CSV_FILE.csv
por"$f"
. No estoy seguro de si eso es correcto.
¿También debo 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 realmente familiarizado con esa variable y "$f"
para esa materia.
¿Cómo podría hacer que esto funcione? Me gustaría que los archivos resultantes aparezcan en la misma carpeta que el archivo que seleccioné para ejecutar el Servicio, mediante el menú de clic derecho del Buscador. Sería aún mejor si el Servicio solo aceptara archivos csv.