Crear un archivo tar del directorio actual sin período anterior


10

Cuando hago lo siguiente:

tar czvf ../myarchive.tar.gz ./

Obtengo una sola carpeta raíz (molesta) en mi archivo tar:

molesto

¿Cómo elimino este horrible período al crear el archivo?



3
O use --transform/ --xform, como lo sugiere Magnus :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
n.st

Respuestas:


6

Usted no

name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"

(Nota: esto no funciona si su shell tiene activado el seguimiento del enlace simbólico del directorio actual y se accede al directorio actual a través de un enlace simbólico).

Sí, esto no es lo que pediste, pero es lo que debes hacer. Los archivos que expanden una gran cantidad de archivos en el directorio actual son molestos: pone la carga de crear un directorio de destino para el archivo en cada persona que desempaqueta el archivo, y si accidentalmente los descomprime en un directorio no vacío, es difícil limpiar. La mayoría de las veces, un archivo debe crear un único directorio de nivel superior cuyo nombre sea el nombre base del archivo.


Entendido. Si recuerdo correctamente, es realmente molesto tener que hacer un paso adicional para descomprimir un archivo en un directorio específico (por ejemplo, tar xzvf archive.tar.gz && mv archive/* /outputvs. unzip archive.zip -d /output)
Naftuli Kay

9

El punto aparece porque tarcrea la estructura de la ruta de la forma en que usted proporciona los argumentos. Entonces, como has dado . como fuente, el archivo también se crea en la misma estructura.

Puedes probar esto y verificar:

tar -czvf ../myarchive.tar.gz *

Actualización de la respuesta con ayuda del comentario de n.st

tar --xform s:'./':: -czvf ../myarchive.tar.gz ./

1
El *globo no coincidirá con los archivos ocultos.
n.st

: D eh ... solo un principiante ... no me di cuenta.
principiante

Podrías usar más globos de bash para incluir archivos ocultos. Mira aquí .
n.st

0

mejor agregue ^ antes de lo anterior.

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

O bien, todo "/" en la ruta completa dentro del archivo se eliminará a menos que "/" sea el final de la ruta completa.


1
Sugiera una edición de esa respuesta en lugar de publicar una respuesta por separado: unix.stackexchange.com/posts/144094/edit
muru
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.