I have a .zip created on a Windows machine (outside of my control). The zip file contains paths that I need to preserve when I unzip.
However, when I unzip, all files end up like:
unzip_dir/\window\path\separator\myfile.ext
I've tried both, with and without -j
option.
My issue is that I need that path information under \window\path\separator\
. I need that file structure to be created when I unzip.
I can mv
the file and flip the \
to /
easily enough in a script, but then there are errors that the destination path directories do not exist. My workaround for now is to mkdir -p
the paths (after converting \
to /
) and then cp
the files to those paths.
But there are a lot of files, and these redundant mkdir -p
statements for every file really slows things down.
Is there any more elegant way to convert a zip file with Windows paths to Linux paths?
Best Answer
I think something went wrong with the creation of the zip file, because when I create a zip file on Windows is has (portable) forward slashes:
But now that you have the files with file names that contain "paths" with backslashes, you can run the following program in
unzip_dir
:This handles files in any directory under the directory from where the program is started. Given the problem that you describe, the
unzip_dir
probably doesn't have any subdirectories to start with, and the program could just walk over the files in the current directory only.