Important! This is an automatic machine translated page. If you can read english, you should Click Here to read the original English version of the article.

Unzip or Unrar Many Files at Once in Linux Giải nén hoặc Unrar Nhiều lúc Khi tập tin trong Linux

If you've got a directory with dozens of zipped or rar'd files, you can run a single command to unzip them all in one step, thanks to the power of the bash shell. Nếu bạn đã có một thư mục với hàng chục tập tin nén hoặc rar'd, bạn có thể chạy lệnh duy nhất để giải nén tất cả trong một bước, nhờ vào sức mạnh của các shell bash.

For this task, we'll use bash's for loop command structure. Replace <var> with a variable name, and <list> with either a command that outputs a list or an explicit list. Đối với nhiệm vụ này, chúng tôi sẽ sử dụng bash cho cấu trúc lệnh lặp Thay thế <var>. Với tên biến, và <list> với một lệnh hoặc là đầu ra danh sách đó một hoặc một danh sách rõ ràng.

for <var> in <list> cho <var> trong <list>
do làm
command $<var>; lệnh $ <var>;
done làm xong

You can run it on a single line with this syntax instead: Bạn có thể chạy nó trên một dòng với cú pháp này thay vì:

for <var> in <list>;do command $<var>;done cho <var> trong <list>; làm lệnh $ <var>; thực hiện

So if you want to unrar a list of files, you could use this command. Vì vậy, nếu bạn muốn unrar một danh sách các tập tin, bạn có thể sử dụng lệnh này. You don't necessarily need the quotes, but it helps when the filenames have spaces or something like that in them. Bạn không nhất thiết cần phải có dấu ngoặc kép, nhưng nó giúp khi tên tập tin có dấu cách hay cái gì như rằng trong họ.

for f in *.rar;do unrar e “$f”;done cho e rar *. in; làm e unrar "$ f"; thực hiện

If you wanted to use 7zip to extract a list of files: Nếu bạn muốn sử dụng 7zip để giải nén một danh sách các tập tin:

for f in *.001;do 7z e “$f”;done cho f trong *. 001; làm 7z e "$ f"; thực hiện

Or if you wanted to unzip a list of files: Hoặc nếu bạn muốn giải nén một danh sách các tập tin:

for f in *.zip;do unzip “$f”;done cho f trong *. zip; làm unzip "$ f"; thực hiện

You could even chain commands together if you wanted to. Bạn có thể thậm chí lệnh chuỗi với nhau nếu bạn muốn. For instance, if all your zip files contained .txt files and you wanted to unzip them and then move the unzipped files to another directory: Ví dụ, nếu tất cả các file zip của bạn chứa các tập tin txt. Và bạn muốn giải nén chúng và sau đó di chuyển các tập tin Unzipped vào thư mục khác:

for f in *.zip;do unzip “$f”;done; for f in *.txt;do mv “$f” /myfolder/;done cho f trong *. zip; làm unzip "$ f"; thực hiện; cho f *. txt ở; làm mv "$ f" / myfolder /; thực hiện

The bash shell is just so incredibly powerful… this doesn't even tap the power, but it should give you a good idea of what is possible. Vỏ bash chỉ là như vậy rất mạnh ... điều này không thậm chí tap sức mạnh, nhưng nó sẽ cung cấp cho bạn một ý tưởng tốt về những gì có thể.

This article was originally written on 05/28/07 Tagged with: Bài viết này ban đầu được viết ngày 05/28/07 Tagged với: Ubuntu Ubuntu

Daily Email Updates Email cập nhật hàng ngày

You can get our how-to articles in your inbox each day for free. Bạn có thể làm thế nào chúng tôi vào các bài viết trong hộp thư của bạn mỗi ngày miễn phí. Just enter your name and email below: Chỉ cần nhập tên và email của bạn dưới đây:


Name: Tên:
Email: Email:

Comments (13) Bình luận (13)

  1. Mr Linux Ông Linux

    Actually, I'm pretty sure with both these commands you can just do this: Trên thực tế, tôi là khá chắc chắn với cả các lệnh này bạn chỉ có thể làm điều này:

    unzip *.zip unzip *. zip
    unzip *.rar giải nén *. rar

    Seems a bit more straightforward. Có vẻ đơn giản hơn một chút. :-)

  2. The Geek The Geek

    That may work sometimes, but didn't work for me. Điều đó có thể làm việc đôi khi, nhưng đã không làm việc cho tôi. (just tried it again to make sure) (chỉ cần thử nó một lần nữa để đảm bảo)

    The article is mostly illustrating how to use the for / do in bash =) Các bài viết được minh họa chủ yếu là làm thế nào để sử dụng cho / làm trong bash =)

  3. BookJunkie BookJunkie

    How would I go about 'rarring' Làm thế nào tôi sẽ đi về 'rarring' :) or zipping a bunch of folders? hoặc nén một bó thư mục?

  4. jose jose

    Is there a decompressor that extracts almost all file types, if so which? Có decompressor rằng chiết xuất gần như tất cả các loại tập tin, nếu như vậy mà?

  5. hoberion hoberion

    find -name *.zip -exec unzip {} \; tìm tên *. zip-exec giải nén () \;

  6. Ranga Ranga

    Try unzip \*.zip – It works in RED HAT flavours, I have not tried it on any other linux. Hãy thử giải nén \ *. zip - Nó hoạt động trong hương vị Red Hat, tôi đã không thử nó trên bất kỳ Linux khác.

  7. Alp Alp

    Why didn'ti find this 3 days ago? Tại sao didn'ti thấy thông tin này 3 ngày trước? The only matter is that the files aren't extracted in subdirectories. Vấn đề duy nhất là các tập tin không được trích trong thư mục con. I made a similar script myself. Tôi làm một kịch bản tương tự như bản thân mình. Take a look: Hãy xem: http://ubuntu.alperortac.de/20.....ubfolders/ http://ubuntu.alperortac.de/20.....ubfolders/

  8. Davide Cavestro Davide Cavestro

    Maybe Alp wants something like this: Có lẽ Alp muốn một cái gì đó như thế này:

    for f in *.zip;do unzip “$f” -d “$f.inflated”;done cho f trong *. zip; làm unzip "$ f"-d "$ f.inflated"; thực hiện

    It works on my Debian. Nó hoạt động trên Debian của tôi.

    PS: I've not seen Alp link cause it seems broken. PS: Tôi đã không thấy sự liên kết Alp có vẻ như bị hỏng.

  9. Alp Alp

    Sorry for the broken link, and thanks for pointing that out. Xin lỗi cho liên kết bị hỏng, và nhờ đó chỉ ra ngoài. It's fixed now. It's fixed now.

  10. Ax3 Ax3

    Very useful tutorial! Hướng dẫn, rất hữu ích! Thanks! Cảm ơn!

    I modified mine a bit to account for archives which ask for confirmation. Tôi đổi mỏ một chút vào tài khoản cho các tài liệu lưu trữ trong đó yêu cầu xác nhận. If you 'man unzip' you'll find a -o switch which: “-o overwrite files WITHOUT prompting” Nếu bạn giải nén người đàn ông '' bạn sẽ tìm thấy một switch-o đó: "-o ghi đè lên tập tin KHÔNG nhắc"

    So my .sh script amounted to: Vì vậy, kịch bản sh. Lượng của tôi về:

    for f in *.zip; cho e zip *. in;
    do unzip -o -d “$f”; làm unzip-o-d "$ f";
    done làm xong

    Hope this helps someone! Hy vọng điều này sẽ giúp người khác! Regards, Kính trọng,
    Ax3 Ax3

  11. Ax3 Ax3

    Looks like my previous code post didn't go thru completely. Hình như bài mã trước đây của tôi đã không đi qua hoàn toàn. I meant on the second line of code: Tôi có nghĩa là trên dòng thứ hai của mã:

    do unzip -o -d foldername/ “$f”; làm unzip-o-d foldername / "$ f";

    Ax3 Ax3

  12. 1jackjack 1jackjack

    I know this page is old, but I just found it when looking for a good unrar script, so thought I would post my final solution. Tôi biết trang này là cũ, nhưng tôi chỉ tìm thấy nó khi tìm kiếm một kịch bản unrar tốt, nên nghĩ tôi sẽ đăng bài giải pháp cuối cùng của tôi. The situation: you're in a directory with a bunch of folders, each one containing a compressed file. Tình hình: bạn đang ở trong một thư mục với một bó thư mục, mỗi một chứa một tập tin nén. I used to use this script, which found and extracted all the *.rar files: Tôi sử dụng để sử dụng kịch bản này, mà tìm thấy và chiết xuất tất cả các file zip *.:

    find -type f -name '*.rar' -exec unrar x {} \; tìm-type f-name '*. rar'-exec unrar x () \;

    But then i noticed some of my compressed files were distributed over many 'part' files, and occasionally, all of these would be *.rar files, and so this script would try to do the whole decompression for part file, which was annoying, time consuming and more importantly not the elegant solution! Nhưng sau đó tôi nhận thấy một số các tập tin nén của tôi đã được phân bố trên nhiều phần '' Bức ảnh, và đôi khi, tất cả trong số này sẽ được tập tin *. rar, và vì vậy kịch bản này sẽ cố gắng làm cho toàn bộ các giải nén tập tin một phần, mà đã gây phiền nhiễu, tốn thời gian và quan trọng hơn không phải là giải pháp tao nhã! So after a bit of reading, I came up with this: Vì vậy, sau khi đọc một chút, tôi đến với điều này:

    for directory in `ls -d */`; do cho các thư mục trong `ls-d * /`; làm
    rarFile=`ls $directory | grep -i .rar –max-count 1`; rarFile = `ls $ thư mục | grep-i-zip. max-count 1`;
    unrar e $directory$rarFile; unrar e thư mục $ $ rarFile;
    done làm xong

    This iterates through each directory at the current level, and for each one finds just the first *.rar file, and extracts it to the current directory. Điều này lặp qua mỗi thư mục ở cấp độ hiện tại, và cho thấy chỉ một trong mỗi file đầu tiên *. rar, và chiết xuất nó vào thư mục hiện hành.

  13. Sergio Sergio

    thx a lot!!! thx rất nhiều! :)


Leave a Comment Để lại một Thảo luận




Leave your Để lại của bạn friendly thân thiện comment here. bình luận ở đây.

If you have a computer help question, Nếu bạn có một câu hỏi giúp máy tính, click here to leave it on the forums bấm vào đây để lại nó trên các diễn đàn instead. thay vì.

Note: Your comment may not show up immediately on the site. Lưu ý: Ý kiến của bạn có thể không hiển thị ngay lập tức trên trang web.

Our Friends Bạn bè của chúng tôi
Getting Started Bắt đầu


About How-To Geek Giới How-To Geek
What Is That Process? Quá trình đó là gì?
svchost.exe svchost.exe
jusched.exe jusched.exe
dwm.exe dwm.exe
ctfmon.exe ctfmon.exe
wmpnetwk.exe wmpnetwk.exe
wmpnscfg.exe wmpnscfg.exe
rundll32.exe rundll32.exe
wfcrun32.exe wfcrun32.exe
Ipoint.exe Ipoint.exe
Itype.exe Itype.exe
Wfica32.exe Wfica32.exe
Mobsync.exe Mobsync.exe
conhost.exe conhost.exe
Dpupdchk.exe Dpupdchk.exe Adobe_Updater.exe Adobe_Updater.exe

Copyright © 2006-2009 HowToGeek.com. Bản quyền © 2006-2009 HowToGeek.com. All Rights Reserved. Tất cả các quyền.