PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehl zum Tarn :)



Pillem
02.01.07, 14:42
Hallo Zusammen,

erstmal ein gutes neues Jahr!!!

ich benötige ein Befehl, den ich einfach nicht hinbekomme.
Dumm..

Ich habe einen große Anzahl von Ordner, davon möchte ich die neusten 10 (vom Datum gesehen) in einen anderen Ordner als Ordner1.tar ablegen bzw. Ordern2.tar...

Wie geht das denn???

Vielen Dank im Vorraus!

Detrius
02.01.07, 15:04
Mit einem Shell-Skript. ;)

find und tar sind dein Freund. :)

Pillem
02.01.07, 15:05
auf die befehle bin ich auch schon gefunden...
aber die kombi ist mir nicht gelungen :(

Detrius
02.01.07, 15:46
Was hast Du denn versucht?

Pillem
02.01.07, 18:14
ich hab den befehl ls -c versucht.
an allem anderen bin ich gescheitert...

suck
02.01.07, 18:28
Vielleicht hilft Dir das bei der weiteren Suche nach der Lösung:

for f in $(ls -1rtd */ | tail -n10); do echo mach was mit $f; done

Pillem
02.01.07, 18:38
for f in $(ls -1rtd */ | tail -n2); tar -c f$ bilder.tar; done

danke die ausgabe geht ja schonmal prima!!!

das hab ich jetzt versucht...

suck
02.01.07, 19:11
Da fehlt das "do" und bei "$f" hast du die Zeichen vertauscht.

Mal angenommen die beiden neusten Ordner heissen "dir_1" und "dir_2": Wie würden dann die beiden Befehle mit "tar" aussehen sollen?

Pillem
02.01.07, 19:23
for f in $(ls -1rtd */ | tail -n2); (tar -cvf $f.tar $f); done

so sollte er doch für jeden ordner eine tar anlegen oder nicht??? *grr*

Das geht auf alle Fälle:
tar -cvf Bingo.tar.gz Bingo/

was mach ich nun noch falsch?

suck
02.01.07, 19:35
Der "/" Am Ende störte noch.. Den habe ich jetzt mit "sed" gelöscht. Wenn folgendes klappt, einfach das "echo" entfernen:

for f in $(ls -1rtd */ | sed 's/\///g' | tail -n2); do echo tar -cvf "$f".tar.gz "$f/"; donePS: Bei Ordnern mit Leerzeichen darin, wird es so nicht funktionieren.

Pillem
02.01.07, 19:57
wir kommen dem ja immer näher :)
vielen dank für Deine Bemühungen.

Allerdings heißt der Ordner "Irgenwas und Irgendwas"
und die leerzeichen werden dann so:

tar -cvf Irgendwas.tar Irgendwas/
tar -cvf und.tar und/
tar -cvf Irgendwas.tar Irgendwas/

bekommst das noch hin???

Wär echt perfekt!!!!

suck
02.01.07, 20:08
Sicher.. ;)

Im Nachhinein wäre es mit "find" wohl einfacher gewesen.. aber egal:



OLDIFS=$IFS; IFS=$'\n'; for f in $(ls -1rtd */ | sed 's/\///g' | sed 's/ /\\ /g' |tail -n2); do echo tar -cvf "$f".tar.gz "$f/"; done; IFS=$OLDIFS

Pillem
03.01.07, 11:33
Grrr warum geht's nicht?


debian@:/data/superbilder$ OLDIFS=$IFS; IFS=$'\n'; for f in $(ls -1rtd */ | sed 's/\///g' | sed 's/ /\\ /g' |tail -n1); do echo tar -cvf "$f".tar.gz "$f/"; done; IFS=$OLDIFS
tar -cvf Bingoabend\ 29.12.06.tar.gz Bingoabend\ 29.12.06/

das ist nach ner sekunde fertig und es wurde kein .tar erstellt why???

Der Gestreifte
03.01.07, 12:25
das ist nach ner sekunde fertig und es wurde kein .tar erstellt why???Weil "ls" gern ein alias ist und die Ausgabe (samt der dann enthaltenen Steuersequenzen) nach irgendwohin umgeleitet dann unsinnig wird.

Probier mal "/bin/ls -1rtd" statt "ls -1rtd */".

suck
03.01.07, 19:22
Du musst das "echo" entfernen!