Sto tentando di creare un servizio di per Finder con il menu di scelta rapida che consente di dividere qualsiasi file csv selezionato, mentre copia nell'intestazione originale nella parte superiore di ogni file.
Il mio attuale tentativo è di far funzionare Automator questo script 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??
Questo script dividerà MY_CSV_FILE.csv
in nuovi file con un massimo di 50 linee durante la copia nell'intestazione originale nella parte superiore di ogni file. I nuovi file avranno il nome originale aggiunto con xaa
, xab
, xac
ecc.
Per quanto riguarda la configurazione di Automator, questo è il servizio al quale sto attualmente lavorando. Il problema adesso è che non riesco a passare il file selezionato nel Finder allo script Bash.
Tienipresenteche:
- Ilservizioriceve:fileocartelleinFinder.app.
- Passal'inputalloscriptShell:comeargomenti.
- Horimosso
#!/bin/bash
dallapartesuperiorediShellScriptehoimpostatolashellsu/bin/bash. - Hocambiato
MY_CSV_FILE.csv
per"$f"
- non sono sicuro che sia corretto.
Devo anche specificare il percorso usando qualcosa come "$@"
sia per il file di input che per i file di output risultanti? Non ho mai fatto qualcosa di simile prima, quindi non ho molta familiarità con quella variabile e "$f"
per quella materia.
Come potrei fare questo lavoro? Mi piacerebbe che i file risultanti comparissero nella stessa cartella del file che seleziono per eseguire il servizio, tramite il menu del tasto destro del Finder. Sarebbe ancora meglio se il Servizio accettasse solo file CSV.