PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit find und co *gG*



quinte17
02-02-2005, 15:59
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:


find . -maxdepth 1 -name "*.tar.gz" -type f

und


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:


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

quinte17
02-02-2005, 22:42
unglaublich aber war! ich habs gelöst!! ;)
für die die wissen wollen wies geht:


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


habe den befehl nocheinmal kurz angepasst, damit man auch noch sieht welche datei er gerade bearbeitet

quinte17
02-02-2005, 23:36
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:


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

quinte17
03-02-2005, 11:26
so hab nun eine möglichkeit gefunden, die ist aber relativ sinnlos... *gg*
da wird dann die gleiche datei 2mal entpackt *gg*


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