0

What would be an efficient way to extract only all of the *.csv files (not other files inside) from inside a hundred zip files in a single directory? Then I need to make one large file with each CVS file appended together although stripping off header line 1 from files 2,...,n.

If it works well I would like to use 7-Zip's 7za.exe the command line version or other solutions that are self contained and don't require installation on a WinXP platform. The zips contain other data I don't need.

Simple appending is easy with file1+file2+..., but how about dropping the header?

2

Actually, to skip the header in Unix/Linux, you would need the 'tail' command.

You can tell the 'tail' command to skip the first line (the header) by doing the following:

tail -n+2 filename

This will tell tail to start reading from line 2.

To do this on all .csv files in your current directory, and append them together, put the following in a script:

#!/bin/bash

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

You can then run this script like ./script.sh>output and the output will be in the file named 'output'.

Unfortunately I do not know if something like tail is available in any capacity on Windows without ports.

  • thanks bash and the tail program make it easy on some platforms. – ExcelCyclist Jan 3 '10 at 0:38
1

To my embarrassment the answer on extracting just a particular file type from within a all compressed files in a directory with 7Zip is simply:

7za.exe e *.zip *.csv

Then to combine the files with a batch file (although its disappointing this single line can't be typed in to the command prompt)

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

but how about dropping the header?

With the unix 'head' command (from mingw, opench or a bunch of other utils) you can use "head -n" to show all but the first 'n' lines

  • thanks, is that available on windows without a messy cygwin port? – ExcelCyclist Jan 2 '10 at 23:06
  • You can get it from unxutils.sf.net (among others) – TML Jan 2 '10 at 23:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.