Entpacken und Umbenennen einer Datei mit einem Befehl

Entpacken und Umbenennen einer Datei mit einem Befehl

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 -dOption 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 -pbewirkt 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 targetVerzeichnis extrahieren, wobei der Name durch im Namen der Archivmitglieder videos_data sersetzt wird .youtube_videos

(Beachten Sie, dass das targetVerzeichnis vorher vorhanden sein muss).

verwandte Informationen