Creating an archive from a directory without the directory name being added to the archive
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Thinking It Over
--
Chapters
00:00 Creating An Archive From A Directory Without The Directory Name Being Added To The Archive
00:55 Accepted Answer Score 195
02:43 Answer 2 Score 5
03:15 Answer 3 Score 1
04:01 Thank you
--
Full question
https://superuser.com/questions/340046/c...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#commandline #compression #7zip
#avk47
ACCEPTED ANSWER
Score 195
From the 7-Zip Help file:
a (Add) command
Adds files to archive.
Examples
7z a archive1.zip subdir\
adds all files and subfolders from folder subdir to archive archive1.zip. The filenames in archive will contain subdir\ prefix.
7z a archive2.zip .\subdir\*
adds all files and subfolders from folder subdir to archive archive2.zip. The filenames in archive will not contain subdir\ prefix.
cd /D c:\dir1\
7z a c:\archive3.zip dir2\dir3\
The filenames in archive c:\archive3.zip will contain dir2\dir3\ prefix, but they will not contain c:\dir1\ prefix.
So the command you'd want would be: 7za.exe a folder1.zip .\folder1\*
Also, pay attention to 7-Zip's handling of wildcards. It doesn't treat *.*
as "all files" -- it means "all files with a period in the filename." Extension-less files will be missed. If you really want all files, just use *
instead.
Finally, the -tzip
parameter isn't needed if the archive filename ends in .zip
. 7-Zip is smart enough to figure out which format you want in those cases. It's only required when you want a custom extension (e.g. 7za.exe a -tzip foo.xpi <files>
for a Mozilla Add-on).
ANSWER 2
Score 5
This worked for me
Consider folder structure like C:\Parent\SubFolders..... And you want to create parent.zip which will contain all files and folders C:\Parent without parent folder [i.e it will start from SubFolders.....]
cd /D "C:\Parent"
"7z.exe" a Parent.zip "*.*" -r
This will create Parent.zip in C:\Parent
ANSWER 3
Score 1
Just to expand on the accepted answer (I was not able to add comment there):
On Linux adding '*' didn't work for me, so I ended up concocting more verbose command line which gave desired result:
curr_dir=$(pwd); \
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir
===========
script explanation:
- save current dir path to use later;
- navigate to directory which needs to be archived;
- create archive (notice '.' (dot) in the end);
- go back to the original dir;
- get rid of the variable which stored original dir path
I hope it might be useful for somebody.