Ich habe eine ZIP-Datei, die eine CSV-Datei enthält, und ich möchte diese in einen bestimmten Ordner entpacken und die Datei in den gleichen Namen wie die ZIP-Datei umbenennen. Beispiel:
Ich habe eine Zip-Datei mit dem Namen: youtube_videos.csv.zip und möchte sie in einen bestimmten Ordner namens „target“ entpacken und die Datei in diesem Ordner in „youtube-videos.csv“ umbenennen. Ich habe sie, aber in zwei Zeilen wie unten:
unzip datasets/youtube_videos.csv.zip -d target
mv target/videos_data.csv target/youtube_videos.csv
Gibt es einen Einzeiler, der verwendet werden könnte?
Antwort1
Hier ist eine einzeilige Option, die die Datei jedoch nicht umbenennt, sondern ihren Inhalt auf stdout ausgibt. Kann möglicherweise auch nicht mit der -d
Option verwendet werden (ich bekomme es nicht hin):
$ unzip -p datasets/youtube_videos.csv.zip videos_data.csv > target/youtube_videos.csv
Oder wenn sich nur eine Datei in der ZIP-Datei befindet, können Sie den Namen der ZIP-Dateien weglassen:
$ unzip -p datasets/youtube_videos.csv.zip > target/youtube_videos.csv
Die Option -p
bewirkt laut Handbuch Folgendes:
-p
Extrahiert Dateien in die Pipe (stdout). An stdout werden nur die Dateidaten gesendet und die Dateien werden immer im Binärformat extrahiert, so wie sie gespeichert sind (keine Konvertierungen).
Antwort2
Mit libarchive bsdtar
:
bsdtar -xvvf youtube_videos.csv.zip -C target -'s/videos_data/youtube_videos/g'
Würde das Archiv in das target
Verzeichnis extrahieren, wobei der Name durch im Namen der Archivmitglieder videos_data
s
ersetzt wird .youtube_videos
(Beachten Sie, dass das target
Verzeichnis vorher vorhanden sein muss).