GNU/Linux >> Znalost Linux >  >> Linux

Bash smyčka rozbalte skript zaheslovaného souboru

Pokud nemáte a nemůžete nainstalovat zipinfo z jakéhokoli důvodu jej můžete napodobit pomocí unzip s -Z volba. Pro výpis obsahu zip použijte unzip -Z1 :

pw="$(unzip -Z1 file1.zip | cut -f1 -d'.')" 
unzip -P "$pw" file1.zip

Dejte to do smyčky:

zipfile="file1.zip"
while unzip -Z1 "$zipfile" | head -n1 | grep "\.zip$"; do
    next_zipfile="$(unzip -Z1 "$zipfile" | head -n1)"
    unzip -P "${next_zipfile%.*}" "$zipfile"
    zipfile="$next_zipfile"
done

nebo rekurzivní funkce:

unzip_all() {
    zipfile="$1"
    next_zipfile="$(unzip -Z1 "$zipfile" | head -n1)"
    if echo "$next_zipfile" | grep "\.zip$"; then
        unzip -P "${next_zipfile%%.*}" "$zipfile"
        unzip_all "$next_zipfile"
    fi
}
unzip_all "file1.zip"

-Z režim zipinfo(1). Pokud je první volba na příkazovém řádku -Z, zbývající volby se považují za volby zipinfo(1). Popis těchto možností naleznete na příslušné manuálové stránce.

-1 :vypíše pouze názvy souborů, jeden na řádek. Tato možnost vylučuje všechny ostatní; záhlaví, upoutávky a komentáře k zipfile se nikdy netisknou. Je určen pro použití v unixových shell skriptech.


Zeptejte se zipinfo pro název souboru uvedený v souboru zip a poté jej zachyťte pro heslo. Použijte toto heslo k rozbalení souboru:

pw=$(zipinfo -1 file1.zip | cut -d. -f1)
unzip -P "$pw" file1.zip

Všimněte si, že příznak zipinfo je jedna není ell .

Když si půjčíme od Gillesovy odpovědi na podobnou otázku, zde je bashová smyčka, která rozbalí vnořený soubor zip chráněný heslem, dokud nebudou žádné další soubory zip:

shopt -s nullglob
while set -- *.zip; [ $# -eq 1 ]
do 
  unzippw "$1" && rm -- "$1"
done

Kde jsem definoval funkci unzippw jako obal pro zipinfo a unzip výše uvedené příkazy:

unzippw ()
{
    local pw=$(zipinfo -1 "$1" | cut -d. -f1)
    unzip -P "$pw" "$1"
}

Linux
  1. Proč skript Bash nerozpozná aliasy?

  2. Bash skript k odstranění nejstaršího souboru ze složky?

  3. Bash Script:Zkontrolujte, zda je soubor textovým souborem?

  1. Jak zastavit skript Loop Bash v terminálu?

  2. Spuštění souboru skriptu přes Ssh přes Sudo?

  3. Jak zkontrolovat podřetězec v Shell Script Bash?

  1. Bash skript:špatný interpret

  2. Jak zahrnout soubor do skriptu bash shell

  3. Porovnejte součty md5 v bash skriptu