For loop 在循环的命令行上更改输出目录

For loop 在循环的命令行上更改输出目录,for-loop,command-line,directory,csvkit,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;

我一直在使用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%%.*}

在这方面的任何帮助都将是非常好的,我提前感谢你

当你跑步时

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;
但是,在运行此代码之前,应该创建输出目录。否则,您可能会收到一个错误,该目录不存在