[buug-l] tar: eliminiere Pfad-Anteil beim Auspacken

Christoph Biedl cbiedl at gmx.de
Sat Apr 19 12:57:58 CEST 2003


Michael Wiedmann wrote...

> - es existiere eine Datei mit zeilenweiser Auflistung von Dateien mit
>   relativen Pfadnamen (z.B. 'xsl/foo/bar/file.xsl'), erstellt durch
>   ein mehr oder weniger schlaues 'find'
> 
> - alle Dateien in dieser Liste sollen umkopiert werden in ein
>   Zielverzeichnis und dabei soll ein Teil des Quell-Pfadnamens 
>   eliminiert werden, z.B.: '$(DESTDIR)/foo/bar/file.xsl'
> 
> - nun kann ich zwar mit 'tar -cz --files-from x.tmp -f x.tgz'
>   wunderbar ein tgz draus machen und im Zielverzeichnis auspacken,
>   weiß aber nicht wie ich den unerwünschten Pfad-Anteil ('xsl')
>   loswerden kann?!

Ich würde, so oder so, den unerwünschten Teil mit sed entsorgen:
cat x.tmp | sed -e 's/^xsl//'

Dann kannst Du nach entsprechendem cd tar -c ; tar -x machen.

> - oder gibt es einen anderen eleganteren Weg ausser über 'tar'

Was spricht gegen "cd xsl ; cat /path/to/x.tmp | sed (...) | \
xargs cp --target-directory=$(DESTDIR)"?

Und was das cat angeht: Bei mir geht Nachvollziehbarkeit (immer von
links nach rechts) vor Effizienz (die auf heutigen Maschinen nicht
meßbar besser wäre), YMMV.

Wahlweise könnte man den unerwünschten Pfadanteil durch einen
vorübergehend angelegten symlink xsl -> $(DESTDIR) verschwinden lassen
und einfach cp -a machen.

	Christoph



More information about the buug-l mailing list