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.