Что может быть эффективным способом извлечения только всех файлов * .csv (а не других файлов внутри) из сотен zip-файлов в одном каталоге? Затем мне нужно сделать один большой файл с каждым файлом CVS, добавленным вместе, хотя и убирая строку заголовка 1 из файлов 2, ..., n.

Если это работает хорошо, я хотел бы использовать 7-Zip 7za.exe версию командной строки или другие решения, которые являются автономными и не требуют установки на платформу WinXP. Молнии содержат другие данные, которые мне не нужны.

Простое добавление легко с file1+file2+..., но как насчет удаления заголовка?

3 ответа3

2

На самом деле, чтобы пропустить заголовок в Unix/Linux, вам понадобится команда tail.

Вы можете указать команде 'tail' пропустить первую строку (заголовок), выполнив следующее:

tail -n+2 filename

Это скажет хвосту начать чтение со строки 2.

Чтобы сделать это для всех файлов .csv в текущем каталоге и добавить их вместе, поместите в скрипт следующее:

#!/bin/bash

for file in *.csv
do
tail -n+2 $file
done

Затем вы можете запустить этот скрипт как ./script.sh>output, и результат будет в файле с именем 'output'.

К сожалению, я не знаю, есть ли что-то вроде tail в любом качестве на Windows без портов.

1

К моему смущению ответ на извлечение только определенного типа файла из всех сжатых файлов в каталоге с 7Zip просто:

7za.exe e *.zip *.csv

Затем объединить файлы с командным файлом (хотя его разочаровывает, что эта единственная строка не может быть введена в командной строке)

[saved as foo.bat for example]
for %%X in (*.csv) do tail -n+2 %%X >> combined.csv
0

а как насчет сброса заголовка?

С помощью команды unix 'head' (из mingw, opench или нескольких других утилит) вы можете использовать "head -n", чтобы показать все строки, кроме первых n.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .