2017-08-30 11 views
0

私はCSVKITを使って、csvに固定幅のデータファイルを解析するソリューションを構築しています。私はディレクトリ内のすべてのファイルを繰り返し処理するために以下のコードをまとめましたが、この同じコードでも、同じディレクトリにファイルが戻されます。ベストプラクティスとして、私は 'IN'フォルダと 'OUT'フォルダを使用すると信じています。また、MACでこのコマンドラインを処理しています。コマンドラインの出力ディレクトリを変更するForループ

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 

私は何かが足りないし、あるいは、私は以下のように私のスニペット内で何かを変更する必要がありますが、私はそれに私の指を置くことができないということだと感じています。

X1 = $ {のx %%。*}

この上の任意のヘルプは素晴らしいだろうと私は事前にお願いします。

答えて

1

あなたが実行し、

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

あなたのプログラムの開発の出力をファイル、$ {X1} .csvファイルへの書き込みをされます。あなたはこのコードを実行する前に、あなたのOUTPUT_DIRを作成する必要があり、

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

しかし:

ので、ちょうどX1に正しいパスを設定します。さもなければ、そのディレクトリが存在しないというエラーを受け取ることができます。

関連する問題