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 -d
opció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 -p
hace, 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 target
directorio videos_data
s
sustituido por youtube_videos
el nombre de los miembros del archivo.
(tenga en cuenta que el target
directorio debe existir de antemano).