Изменить выходной каталог в командной строке For Loop

Я работал над 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 = $ {х %%.*}

Любая помощь в этом была бы замечательной, и я заранее благодарю вас.

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, прежде чем запускать этот код. В противном случае вы можете получить сообщение об ошибке, этот каталог не существует.

Другие вопросы по тегам