Как я могу объединить различные файлы CSV только в один в одной строке, разделенной запятой?

У меня более или менее 100 файлов CSV, и я хочу объединить их все в один и тот же файл .csv, в одну строку и отсортировать по дате изменения.

На самом деле я использую paste -d, *.csv > out.csv, но файлы называются так:

образец_1

И он упорядочивает содержимое следующим образом:

sample_100
sample_101
sample_102
...
sample_10
sample_110
sample_111
...

Желаемый порядок:

sample_1
sample_2
sample_3
...
sample_100

Решение можно упорядочить по дате модификации не знаю как, может что-то вроде ls -latr | paste -d, *.csv > out.csv

Спасибо!


person Borja León    schedule 25.11.2016    source источник


Ответы (1)


for i in $(ls -t); do  paste -d, $i >> out.csv; done

ls -t : перечислит файлы и упорядочит их по времени модификации.

">>": вместо > для объединения и не удаления предыдущего содержимого.

Я протестировал его локально, и он хорошо работает для меня.

person Hicham    schedule 25.11.2016
comment
Он дает выходной файл CSV с содержимым в том же столбце, как я могу поместить его в ту же строку? - person Borja León; 25.11.2016
comment
sed 's/^|$/\x27/g' out.csv | paste -sd, > out2.csv после вашей команды и все в порядке. Спасибо! - person Borja León; 25.11.2016