unziptiene una opción ingeniosa -j, por la cual se descarta la estructura de directorios del archivo y todos los archivos se extraen en el mismo directorio.
¿Hay alguna manera de hacer el tartrabajo de la misma manera? Nada en la página del manual parece indicarlo.
Entonces, ¿existe una herramienta alternativa, preferiblemente de software libre, que haga eso?

Respuestas:
El alquitrán GNU vive de la featuritis, por lo que, naturalmente, también tiene algunas opciones para eso.
http://www.gnu.org/software/tar/manual/html_node/transform.html
Si solo desea eliminar algunos segmentos de ruta, entonces
--strip-components=no--strip=na menudo lo hará:Pero también es posible regex-reescribir los archivos a extraer (las banderas son
--transformo--xformy aceptan ereg con el/xmodificador):Para enumerar un alquitrán, necesita la
--show-transformedopción adicional :Creo que las opciones de reescritura también funcionan para empacar, no solo para extraer. Pero
paxobviamente tiene una sintaxis más agradable.fuente
s#.*/##?--stripno se menciona en la página del manual de os x tar, pero funciona de todos modos, ¡gracias!--stripy--strip-components?Puede hacerlo con bastante facilidad en dos pasos. Adaptarse según sea necesario:
fuente
find -exec mv -ilugar defind | xargs) ... pasos simples que puedo repetir en cualquier sistema sin tener que cargar un script para hacerlo por mí.tmpdir=$( mktemp -d )es útil al crear directorios temporalespaxpuede hacerlo:o
Puede verificar la operación de reemplazo de nombre primero omitiendo la
-ropción.fuente
Una posible solución que no requiere instalar nada.
tar tvfpara tomar todos los archivos del tarballExtraiga esos archivos individualmente: tenga extracto de tar para stdout y redirija a $ filename
guardar como extract.sh y ejecutar como
extract.sh myfile.tar. También sobrescribirá cualquier nombre de archivo duplicado encontrado en los directorios extraídos del tarball.fuente
La
-Oopción extrae un archivo a la salida estándar y>redirige esa salida a un archivo. Entonces, en mi ejemplo, estoy extrayendo foo.mp3 y redirigiéndolo a bar.mp3. Los nombres de los archivos son arbitrarios.fuente