Hemsida » hur » Unzip eller Unrar många filer på en gång i Linux

    Unzip eller Unrar många filer på en gång i Linux

    Om du har en katalog med dussintals zip-filer eller rar'd-filer kan du köra ett enda kommando för att unzipa dem alla i ett steg tack vare kraften i bash-skalet.

    För denna uppgift använder vi bashs for loop-kommandostrukturen. Ersätt med ett variabelt namn, och med antingen ett kommando som matar ut en lista eller en explicit lista.

    för in
    do
    kommando $;
    Gjort

    Du kan köra den på en enda rad med den här syntaxen istället:

    för in; göra kommando $; gjort

    Så om du vill unrar en lista med filer kan du använda det här kommandot. Du behöver inte nödvändigtvis citat, men det hjälper när filnamnen har mellanslag eller något liknande i dem.

    för f i * .rar; gör unrar e "$ f"; gjort

    Om du ville använda 7zip för att extrahera en lista med filer:

    för f i * .001; gör 7z e "$ f"; gjort

    Eller om du vill pakka ut en lista med filer:

    för f i * .zip; gör unzip "$ f"; gjort

    Du kan till och med kedja kommandon tillsammans om du ville. Om till exempel alla dina zip-filer innehöll .txt-filer och du ville ta bort dem och flytta sedan de ozippade filerna till en annan katalog:

    för f i * .zip; gör unzip "$ f"; done; för f i * .txt; gör mv "$ f" / myfolder /; gjort

    Bash skalet är bara så oerhört kraftfullt ... det här gör inte ens kraften, men det borde ge dig en bra bild av vad som är möjligt.