Descomprimir y cambiar el nombre de un archivo con un solo comando

Descomprimir y cambiar el nombre de un archivo con un solo comando

Tengo un archivo zip que contiene un CSV y me gustaría descomprimirlo en una carpeta específica y cambiarle el nombre al archivo igual que el nombre del archivo zip. Por ejemplo.,

Tengo un archivo zip llamado: youtube_videos.csv.zip y me gustaría descomprimirlo en una carpeta determinada llamada destino y cambiar el nombre del archivo en esa carpeta a youtube-videos.csv. Lo tengo, pero en dos líneas como a continuación:

unzip datasets/youtube_videos.csv.zip -d target 
mv target/videos_data.csv target/youtube_videos.csv

¿Existe alguna línea que pueda usarse?

Respuesta1

Aquí hay una opción de una sola línea, pero no cambia el nombre del archivo, envía su contenido a la salida estándar. Además, tal vez no se pueda usar con la -dopción (no puedo hacer que funcione):

$ unzip -p datasets/youtube_videos.csv.zip videos_data.csv > target/youtube_videos.csv

O si solo hay un archivo dentro del zip, puedes omitir el nombre de los archivos comprimidos:

$ unzip -p datasets/youtube_videos.csv.zip > target/youtube_videos.csv

La opción -phace, según el manual:

-p extraer archivos a la tubería (stdout). Nada más que los datos del archivo se envía a la salida estándar, y los archivos siempre se extraen en formato binario, tal como se almacenan (sin conversiones).

Respuesta2

Con libarchivo bsdtar:

bsdtar -xvvf youtube_videos.csv.zip -C target -'s/videos_data/youtube_videos/g'

Extraería el archivo en el targetdirectorio videos_data ssustituido por youtube_videosel nombre de los miembros del archivo.

(tenga en cuenta que el targetdirectorio debe existir de antemano).

información relacionada