29

How can I extract about 900 7z files which are all located in the same folder (all have only one file inside) without doing it one by one?

I am using Ubuntu 10.10. All files are located in /home/username/folder1/folder2.

Franck Dernoncourt
  • 77,520
  • 72
  • 342
  • 501
Robert Cardona
  • 1,068
  • 5
  • 18
  • 31

11 Answers11

48
7za -y x "*.7z" 

The above code worked for me

Santosh Pillai
  • 1,311
  • 1
  • 20
  • 31
20
for arc in *.7z
do
  7zwhatever "$arc"
done
Ignacio Vazquez-Abrams
  • 776,304
  • 153
  • 1,341
  • 1,358
11

Using parallel is rather convenient way with total progress meter for free ;)

ls *.7z | parallel -j+0 --eta '7z x {} >/dev/null'
8

7z x "*.7z" this worked for me in ubuntu

pzyxian
  • 89
  • 1
  • 2
  • Maybe you explain a little bit more what this line does, for example by citing the manpage. This may help other users with the same issue to better understand **how** this solves the problem. – Jankapunkt May 17 '18 at 20:14
  • Practically the same as [the current top answer](https://stackoverflow.com/a/39369247/6404709) (posted in 2016), only doesn't have the `-y` flag (confirm all). Has Ubuntu had a package supplying the `7z` command? – user598527 Jun 03 '23 at 12:21
7
for f in *.7z
do
    7zr e "$f" &
done

This will extract all .7z files if they're 7z format to the current directory, without waiting for completion.

Your computer could be owned. You have been warned!

Matt Joiner
  • 112,946
  • 110
  • 377
  • 526
5

If you wish to extract multiple 7zip archives to folders with the same names in Linux, you can use:

for archive in *.7z; do 7z x -o"`basename \"$archive\" .7z`" "$archive"; done

For example, if you have two 7zip archives a.7z and b.7z, it will create two folders a and b, and uncompress a.7z into folder a and b.7z into folder b.

The above command comes from this answer on superuser by user Vojtech.

Franck Dernoncourt
  • 77,520
  • 72
  • 342
  • 501
5

You do not need to overcomplicate things. To extract a 7-Zip archive split to multiply parts use the following command:

7z x archive.7zip.0

7-Zip will notice you that you have a multi-volume archive and it unpacks everything.

zappee
  • 20,148
  • 14
  • 73
  • 129
  • this worked great. also I used `7z x archive.7zip.00*` and it put back together the two .001 and .002 files. – james-see Mar 21 '22 at 01:31
5

Probably the simplest approach is below

 ls | xargs -n1 7z x 
Anatolii Shuba
  • 4,614
  • 1
  • 16
  • 17
0

in adition to using a for loop

you can also use find in combination with the exec argument or xargs

hhafez
  • 38,949
  • 39
  • 113
  • 143
0

Another example with -aos parameter.

# ls Environment-voice-20180629-20180705-20230706024500.zip Environment-voice-20180729-20180802-20230706050000.zip | xargs -n1 7za x -aos '-xr!/http*'

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (50657),ASM,AES-NI)

Scanning the drive for archives:
1 file, 2928050140 bytes (2793 MiB)

Extracting archive: Environment-voice-20180629-20180705-20230706024500.zip
--
Path = Environment-voice-20180629-20180705-20230706024500.zip
Type = zip
Physical Size = 2928050140
64-bit = +

Everything is Ok

Files: 631108
Size:       2664870996
Compressed: 2928050140

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (50657),ASM,AES-NI)

Scanning the drive for archives:
1 file, 2387436055 bytes (2277 MiB)

Extracting archive: Environment-voice-20180729-20180802-20230706050000.zip
--
Path = Environment-voice-20180729-20180802-20230706050000.zip
Type = zip
Physical Size = 2387436055
64-bit = +

Everything is Ok

Files: 505001
Size:       2177832150
Compressed: 2387436055


Nash A
  • 87
  • 6
-2

The simplest way is unzip '*.zip'.

Make sure you have the ' marks.

Peter O.
  • 32,158
  • 14
  • 82
  • 96
M Tarmiz
  • 5
  • 1