tar -tf filename.tar
folder1/file
folder1/name
[...]
Me gustaría extraer el archivo y el nombre de la carpeta2 . ¿Se puede hacer esto de una sola vez?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Me gustaría extraer el archivo y el nombre de la carpeta2 . ¿Se puede hacer esto de una sola vez?
Respuestas:
Uso -C
y --strip-components
(Ver man tar
).
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
La -C
bandera asume que un directorio ya está en su lugar, por lo que el contenido del archivo tar puede expandirse en él. de ahí el mkdir FOLDER
.
La --strip-components
bandera se usa cuando un archivo tar naturalmente se expandiría en una carpeta, digamos, como github, donde se muestra como una repo-name-master
carpeta. Por supuesto, no necesitaría la carpeta de primer nivel generada aquí, por lo que --strip-components
configurarla 1
eliminaría automáticamente esa primera carpeta por usted. Cuanto mayor sea el número, más carpetas anidadas se eliminarán.
También puede usar la --transform
opción para un poco más de flexibilidad. Acepta cualquier operación de reemplazo de sed.
Por ejemplo, así es como extraigo un tarball de Linux a un nuevo directorio para poder aplicar un parche:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
. No lo vi--strip-components
. agradable