bunzip2 in ein anderes Verzeichnis

8

Angenommen, ich habe eine Datei foo.tbz2in einem Verzeichnis. Ich möchte die tarDatei aus dem Archiv extrahieren , aber in ein anderes Verzeichnis. Es scheint, bunzip2als würde das Archiv nur in dasselbe Verzeichnis wie das Archiv extrahiert. Vermisse ich etwas

Das funktioniert, aber ich frage mich, ob es einen besseren Weg gibt:

cd /another/directory
bunzip2 -k -c /original/directory/foo.tbz2
langer Hals
quelle
Ich denke, die cdMethode und extrahieren ist die beabsichtigte Methode. Was ist daran falsch?
jw013
@ jw013 Es ist nichts falsch daran, nur neugierig auf mögliche Alternativen.
Longneck
@ Longneck, das überhaupt nicht funktioniert - es extrahiert nach stdout, nicht eine Datei in / another / Verzeichnis
OrangeDog

Antworten:

15

Sie können die anderen bzip2-Tools verwenden:

bzcat foo.tbz2 > /another/directory/foo.tar

bzip2 -ckd foo.tbz2 > /another/directory/foo.tar

Beachten Sie, dass Sie die Option -C verwenden können, wenn Sie es in ein anderes Verzeichnis entpacken möchten, um tar:

tar xjf foo.tbz2 -C /another/directory
mrb
quelle
1
+1 für die Verbreitung des Wortes auf der -CTeerflagge. Es ist wirklich praktisch, aber kaum jemand weiß es.
DJF
1
Ich möchte das Teerarchiv nicht extrahieren, aber bzcat sieht genau so aus, wie ich es gesucht habe. Vielen Dank!
Longneck
0

Ich habe einen Vorschlag: Wenn Sie ein *bz2 file Ob haben *.tar.bz2oder *.bz2 nicht, verwenden Sie bunzipeinfach tar command, weil der Befehl tar viele Funktionen hat, die Ihnen helfen können.

tar -jxf *.tar.bz2 -C yourplace/
or 
tar -jf *.bz2 -C yourplace/
Persischer Golf
quelle
Ich möchte nicht, dass die TAR-Datei extrahiert wird. Das Endergebnis eines von mir verwendeten Befehls muss die TAR-Datei in einem anderen Verzeichnis als die bz2-Datei sein, und die ursprüngliche bz2-Datei darf nicht gelöscht oder geändert werden.
Longneck
Die obigen Befehle ändern keine Originaldateien. Hinweis: Die TAR-Datei funktioniert mit jedem Algorithmus wie * gz * tar * lm * 7 usw.
PersianGulf
0

Version aus früheren Skripten (ohne Doppelplattenschreiben - entpackte Datei im Speicher behalten - bei großen Dateien und langsamen Datenträgern macht dies einen großen Geschwindigkeitsunterschied):

#!/bin/sh

maxsize=2G
mkdir tmpfs 2>/dev/null
mount -t tmpfs -o size=${maxsize} tmpfs tmpfs

for i in $(ls -rS *.gz | sed 's/\.gz//');
do
     nice -n 19 gunzip -c ${i}.gz > tmpfs/${i}
     nice -n 19 bzip2 -c tmpfs/${i} > ${i}.bz2
     rm -f tmpfs/${i}
     if test -s "${i}.bz2"
     then
            rm -f "${i}.gz"
     fi
done
umount tmpfs
Reigo
quelle
Wie ist das für die Frage relevant?
Dani_l