Anzeige:
Ergebnis 1 bis 4 von 4

Thema: probleme mit find und co *gG*

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496

    probleme mit find und co *gG*

    hallo liebe gemeinde!
    also zu meinem problem:
    ich möchte im aktuellen verzeichnis alle *.tar.gz dateien nach *.tar.bz2 umwandeln... ich habe schon ein script, welches erst alle entpackt, und danach wieder alle packt. nun hab ich mir gedacht versuchst es mal anders und tust jedes file entpacken und gleich wieder packen mit "pv" dazwischen, damit man schön den fortschritt sieht
    meine ergebnisse bis jetzt:
    Code:
    find . -maxdepth 1 -name "*.tar.gz" -type f
    und
    Code:
    echo bla.tar.gz | sed -e "s/\.tar\.gz/\.tar\.bz2/g"
    funzt alles soweit so gut

    nun wollte ich das alles zusammen anwenden und logisch auf jede gefundene datei anwenden:
    gunzip gefundene.tar.gz | pv | bzip2 > gefundene.tar.bz2

    daraus entstand dann dies:
    Code:
    find . -maxdepth 1 -name "*.tar.gz" -type f -exec gunzip -c {} | pv | bzip2 > echo {} | sed -e "s/\.tar\.gz/\.tar\.bz2/g" \;
    mein problem ist nun dass das \; an sed geht und nicht an find... und ich weiß auch nciht ob das so hinhaut wie ich will ^^

    bitte um hilfe und erklärung
    greetz

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    unglaublich aber war! ich habs gelöst!!
    für die die wissen wollen wies geht:
    Code:
    find . -maxdepth 1 -name "*.tar.gz" -type f -exec bash -cC 'gunzip -c $0 | pv -N $0 | bzip2 -9 > `echo $0 | sed "s/\.tar\.gz$/\.tar\.bz2/g"` && rm $0' {} \;
    dieser befehl sucht im aktuellen verzeichnis dateien der art:
    *.tar.gz
    tut diese nach
    *.tar.bz2
    umpacken und löscht dass *.tar.gz...

    wers braucht
    viel spaß damit!!
    greetz

    [edit]
    habe den befehl nocheinmal kurz angepasst, damit man auch noch sieht welche datei er gerade bearbeitet
    [/edit]
    Geändert von quinte17 (03-02-2005 um 12:05 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    jetzt wäre nur noch schön zu sehen wie weit er denn wirklich ist
    also in man pv steht da was schönes dazu drin:
    pv -s SIZE
    hiermit kann man die größe mitgeben von wieviel er denn ausgehen soll...

    nun müsste der befehl oben "nur" noch angepasst werden damit dieser parameter richtig "erzeugt" wird...
    in der manpage findet sich auch noch ein beispiel:
    Code:
    cat test | pv -s `du -sb test | awk '{print $1}'` > /dev/zero
    sieht so eigentlich schon recht nett aus, habe nur des problem dass es dann im oberen befehl alles kaputt macht ;(

    wer kann denn des noch zurechtbasteln?
    greetz

  4. #4
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    so hab nun eine möglichkeit gefunden, die ist aber relativ sinnlos... *gg*
    da wird dann die gleiche datei 2mal entpackt *gg*
    Code:
    find . -maxdepth 1 -name "*.tar.gz" -type f -exec bash -cC 'gunzip -c $0 | pv -N $0 -s `zcat $0 | wc -c` | bzip2 -9 > `echo $0 | sed "s/\.tar\.gz$/\.tar\.bz2/g"` && rm $0' {} \;
    sieht dafür sehr schön aus ^^
    greetz
    Geändert von quinte17 (03-02-2005 um 12:00 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •