2017-08-30 3 views
0

Je travaille sur CSVKIT pour créer une solution d'analyse de fichiers de données de largeur fixe dans csv. J'ai rassemblé le code ci-dessous pour parcourir tous les fichiers d'un répertoire, mais ce même code replace également les fichiers dans le même répertoire que celui d'origine. Comme meilleure pratique, je crois en utilisant un dossier «IN» et un dossier «OUT». Je suis également en train de traiter cette ligne de commande sur un MAC.Modification du répertoire de sortie sur la ligne de commande For Loop

for x in $(ls desktop/fixedwidth/*.txt); do x1=${x%%.*}; in2csv -f fixed -s desktop/ff/ala_schema.csv $x > $x1.csv; echo "$x1.csv done."; done 

je sens que je manque quelque chose et ou que je dois changer quelque chose dans mon extrait ci-dessous, mais je ne peux pas mettre mon doigt dessus.

x1 = $ {x %%. *}

Toute aide sur ce serait merveilleux et je vous remercie à l'avance.

Répondre

1

Lorsque vous exécutez,

in2csv -f fixed -s desktop/ff/ala_schema.csv $x > $x1.csv 

la sortie de votre programm sera en train d'écrire dans le fichier, $ {x1} .csv.

Donc, vient de mettre chemin correct x1:

output_dir=/path/to/your/dir/ 
output_file=${output_dir}${x%%.*}.csv 
in2csv -f fixed -s desktop/ff/ala_schema.csv $x > $output_file; 

Mais, vous devez créer votre output_dir, avant d'exécuter ce code. Sinon, vous pouvez recevoir une erreur, ce répertoire n'existe pas.