15. marts 2007 - 01:13Der er
8 kommentarer og 1 løsning
batch unzip til mappe
Jeg har en bunke .zip filer som jeg gerne vil unzippe til en mappe og derefter gzip hver enkelt fil inde i den mappe.
Jeg er ikke særligt god til bash script, så om nogen kan lave en hurtig eksempel på hvordan jeg kan gøre det.
vad jeg gerne vil kan illustreres sådan her:
Nu ser det sådan ud: TingABC.zip TingDEF.zip TingGHI.zip
Vad jeg vil have: TingABC/TingA.gz TingABC/TingB.gz TingABC/TingC.gz TingDEF/TingD.gz TingDEF/TingE.gz TingDEF/TingF.gz TingGHI/TingG.gz TingGHI/TingH.gz TingGHI/TingI.gz
Det scriptet så skal finde ud af er: Vad hedder zip filen. unzip filnavn.zip -d filnavn for hver enkelt fil inde i filnavn gzip -9 fil Gå videre til næste zipfil og repetere.
Dette script unzipper alle til samme directory, og pakker dem bagefter enkeltvis ned i filer. De kommer ikke til at ligge i forskellige dir's som du egentligt foreslår, det kan laves, men er det vigtigt?
Ja det er enlig viktigt da nogle af Zip filerne er navnet på Zip filen anerledes, end en anden. Men indeholdet kan have samme navn som indeholdet i en anden zip fil.
"Ja det er enlig viktigt da nogle af Zip filerne er navnet på Zip filen anerledes, end en anden. Men indeholdet kan have samme navn som indeholdet i en anden zip fil."
Som du kan se i eksemplet, så indholder alle 3 zip filer 2 dokumenter. Men navnet er det samme som i de andre zip filer.
Jeg har ca 2500 zip filer der er sådan, hvor mange af dem har indehold hvor navnene er det samme som i de andre. Derfor er jeg nød til at udpakke dem i deres egne mapper.
Fik lidt hjælp på Linuxquestions.org og kom op med følgende.
#!/bin/bash
find -type f -iname '*.zip' | while IFS= read -r file do dir=${file%.zip} if mkdir "$dir" then curdir=`pwd` cd "$dir" || { echo "Could not move to $dir"; continue; } unzip -q "$curdir/$file" gzip -9 * cd .. rm "$file" fi done exit 0
Men siden du også kom op med en løsning skal du jo have points. :-) Så smid et svar.
Det har jeg selv prøvet at finde ud af. :) Men så vidt jeg kan se har det med Mellemrum osv i filnavne at gøre.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.