2013-09-04 3 views
0

У меня есть структура каталогов, как показано ниже.Объединить файлы по нескольким папкам с помощью PowerShell

ROOT_DIR

Sub_dir1 

    Sub_dir2 

    .... 

Здесь у меня есть несколько вложенных папок в корневой папке. Теперь каждая подпапка содержит файл message.csv. Я хочу добавить их и создать новый файл csv.

+1

Извиняюсь за то, что может быть глупый вопрос, но Я полагаю, что все CSV имеют одинаковые столбцы? Кроме того, есть ли у кого-нибудь из них заголовки столбцов? Делает разницу с ответом. –

ответ

3

Предполагая, что все версии CSV имеют те же столбцы, что-то, как это должно работать:

$root = 'C:\path\to\Root_dir' 
$csv = 'C:\path\to\output.csv' 

Get-ChildItem $root -Filter 'message.csv' -Recurse | % { 
    Import-Csv $_.FullName 
} | Export-Csv $csv -NoTypeInformation 

Чтобы удалить дубликаты из вывода попробуйте вместо этого:

$root = 'C:\path\to\Root_dir' 
$csv = 'C:\path\to\output.csv' 

Get-ChildItem $root -Filter 'message.csv' -Recurse | % { 
    Import-Csv $_.FullName 
} | ConvertTo-Csv -NoTypeInformation | select -Unique | Out-File $csv 
+0

Большое спасибо за вашу помощь. Можете ли вы указать мне, как выбирать отдельные строки после слияния csv-файлов на основе столбца ID? –

+0

Вы хотите отфильтровать результат, прежде чем записывать его в выходной файл? Если да, то почему вы не упомянули об этом в своем вопросе? Каковы ваши критерии? –

+0

Прошу прощения, я не упомянул критерии дублирования в начале моего вопроса. Поскольку я узнал о ошибке дублирования после того, как я объединил файлы. Удаление дубликатов отлично на любом этапе слияния, только проблема - это производительность. После слияния всех файлов csv размер объединенного файла растет до пары GB. –

Смежные вопросы