Как искать CSV-файлы одного и того же шаблона в разных каталогах и объединять их в один CSV-файл с одной строкой заголовка в сценарии оболочки - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть файлы CSV с таким же шаблоном:

  • relsendTest.csv
  • relsendTest2.csv
  • relsendTest3.csv

в таких папках, как

  • neolog201
  • neolog202
  • neolog203

Мой текущий скрипт может преобразовать эти файлы в один файл CSV

head -1 relsendTest.csv > output.csv
for filename in $(ls relsend*.csv); do sed 1d $filename >> output.csv; done

но проблема в том, что эти файлы находятся в одном каталоге. У меня есть файл, как этот шаблон в разных каталогах. Мне нужно объединить эти несколько файлов в один.

1 Ответ

0 голосов
/ 24 февраля 2020

Для проверки своего решения я создал следующую структуру:

Dir: neolog201
    relsendTest.csv
Dir: neolog202
    relsendTest2.csv
Dir: neolog203
    relsendTest3.csv

Затем протестировал find:

$ find . -name "relsendTest*.csv" -print
./neolog203/relsendTest3.csv
./neolog202/relsendTest2.csv
./neolog201/relsendTest.csv

Итак, у вас есть список файлов. Полный скрипт:

#!/bin/bash

# Get the list of files
fileslist=$(find . -name "relsendTest*.csv" -print)

# The header of the output.csv is the first line of the first file in the list
head -1 $(echo $fileslist | awk '{print $1}') > output.csv

# Then loop on each file and get all lines except the first line of each file
for F in $fileslist
do
    sed 1d $F >> output.csv
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...