Actualmente lo hago en un shellscript de manera muy ineficiente:
cp -a $MYPATH /tmp/$VERSION
cd /tmp
tar cjf archive.tar.bz2 $VERSION
Quiero que todo esté contenido en el directorio llamado $ VERSION. ¿Hay alguna manera de hacerlo sin tener que copiar todo como en el script anterior?

tar cjf archive.tar.bz2 $MYPATH?Respuestas:
La versión GNU de
taradmite la--transformopción (y su alias--xform), podría usarla asíPor ejemplo, dado este árbol de directorios
El comando
producirá un archivo como
fuente
flags=r;resuelve el problema como se menciona en stackoverflow.com/a/29661783/388803 .s/^a\//b\//, la imagentar -tfija se muestraa/mientras todos los demás archivos están debajob/; Supongo que esto es peligroso, y realmente no necesito protegerme contra algún otro archivo con el mismo prefijo que no sea un directorio en el archivo tar; así que no está bien la barra inclinada final, no me importaría saber la mejor manera de manejar el caso de laa/transformación, pero noaa/si fuera un hermano del nodo raíz.Para tar el directorio actual y agregar un prefijo, esto funcionó para mí:
fuente
Si puede escapar sin preservar los enlaces simbólicos dentro del árbol de archivos que está tratando, podría hacerlo
La
hopción significa enlaces simbólicos de desreferencia, es decir, incluir el archivo o directorio al que apunta el enlace en lugar de simplemente registrar el hecho de que había un enlace simbólico y lo que señalaba.fuente
Para agregar un prefijo de directorio cómodamente, use un separador diferente al
/del--transformargumento, por ejemplo,+o,como en la respuesta de Andy.Entonces, para un caso más simple, tiene un montón de archivos en el directorio actual y no desea crear una tarbomb .
La sintaxis es
s+search+replace+, y^simplemente coincide con el inicio del nombre del archivo.Y ahora, solo para responder al OP, bueno, puede evitar copiar todo su directorio
/tmpejecutando:Alternativamente:
(enlace duro, evita problemas con enlaces simbólicos)
Los dos últimos se incluyeron por valor de entretenimiento, yo mismo me quedaría con la respuesta de toro2k.
fuente