PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bestimmte dateien aus dem tar extrahieren



mr-sansibar
29-08-2007, 13:58
Wie kann ich aus einen Tar-File bestimmte Dateien entpacken.
habe es so versucht geht aber nicht ???

tar -xf abc.tar `tar -tf abc.tar | grep '(/^logfile|/^inoutput)'`

danke...

BLUESCREEN3D
29-08-2007, 17:00
Dein grep-Aufruf ist falsch und findet deshalb nicht die richtigen Zeilen - so geht es:

grep '^\(logfile\|inoutput\)'
Außerdem solltest du vorher noch folgendes setzen:

IFS=$'\n'
Ansonsten kannst du keine Dateien, die z.B. Leerzeichen enthalten, extrahieren.

mr-sansibar
29-08-2007, 17:21
was macht

IFS=$'\n'

BLUESCREEN3D
29-08-2007, 18:07
IFS steht für Internal Field Separator und ist ein String dessen Zeichen von der Shell alle als Trennzeichen von Parametern angesehen werden. Normalerweise steht da unter anderem das Leerzeichen drin und wenn du nun eine Datei hättest, die "logfile 1" heißt, dann würde das beim äußeren tar einmal als Dateiname "logfile" und einmal als "1" ankommen anstatt als "logfile 1".
Deshalb das ganze eben nur auf einen Zeilenwechsel \n setzen. Falls du eine Datei hast, deren Name einen Zeilenwechsel enthält, wird das natürlich immernoch fehlschlagen, aber solche Dateinamen wirst du wohl eher nicht in dem Archiv haben, oder? ;)