在命令行For Loop上更改输出目录

时间:2017-08-30 21:36:52

标签: for-loop command-line directory csvkit

我一直在使用CSVKIT构建一个解决方案,用于将固定宽度的数据文件解析为csv。我已经将下面的代码放在一起来遍历目录中的所有文件,但是同样的代码也将文件放回到它来自的同一目录中。作为最佳实践,我相信使用' IN'文件夹和' OUT'夹。我也在MAC上处理这个命令行。

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 个答案:

答案 0 :(得分:1)

当你跑步时,

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

您的程序输出将写入文件$ {x1} .csv。

所以,只需设置正确的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;

但是,在运行此代码之前,您应该创建output_dir。否则您可能会收到错误,该目录不存在。