2012-03-14 20 views
131

Tengo una necesidad de crear una postal con el comandocrear cremallera - ignorar estructura de directorios

zip /dir/to/file/newZip /data/to/zip/data.txt 

Esto funciona, pero el archivo zip creado crea una estructura de directorios que imitan el directorio en el archivo RAW. Son muchas carpetas adicionales que no necesito.

No encontré una respuesta en una mirada superficial sobre la página de manual o una búsqueda de google.

+0

Stack Overflow es un sitio que atiende ciertas preguntas relacionadas con la programación y el desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte [Qué temas puedo preguntar aquí] (http://stackoverflow.com/help/on-topic) en el Centro de ayuda. Tal vez [Superusuario] (http://superuser.com/) o [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) sería un mejor lugar para preguntar. – jww

+0

[directorio zip de Unix, pero excluidos los subdirectorios específicos] (https://superuser.com/q/312301/173513), [cómo excluir directorios y archivo comprimiendo un directorio?] (Https://askubuntu.com/q/371579), [Cómo excluir un directorio al comprimir archivos] (https://unix.stackexchange.com/q/219101/56041), etc. – jww

+0

Estaba pensando que esta pregunta era anterior a todos esos otros intercambios de pila, pero desafortunadamente la publicación del superusuario es más antigua que esta. Si hay algo que pueda hacer aquí para ayudarme a dejarme saber. Esta debe ser la respuesta más acertada ya que Google todavía maneja mucho tráfico aquí. : D – Jake

Respuesta

239

Puede usar -j.

-j 
--junk-paths 
      Store just the name of a saved file (junk the path), and do not 
      store directory names. By default, zip will store the full path 
      (relative to the current directory). 
+13

Si '-j' no funciona para su directorio (junto con' -r') checkout [esta respuesta] (http://superuser.com/a/119661/45285) – czerasz

+0

alguna vez, simplemente no funciona trabajo ... prefiera el enlace @czerasz;) que básicamente es un combo pushd popd – TecHunter

30

Utilice la opción -j:

-j  Store just the name of a saved file (junk the path), and do not 
      store directory names. By default, zip will store the full path 
      (relative to the current path). 
2

Como alternativa, puede crear un enlace simbólico temporal para su archivo:

ln -s /data/to/zip/data.txt data.txt 
zip /dir/to/file/newZip !$ 
rm !$ 

Esto funciona también para un directorio.

12

Usando -j no funcionará junto con la opción -r.
Así que el trabajo en torno a que puede ser esta:

cd path/to/parent/dir/; 
zip -r complete/path/to/name.zip ./* ; 
cd -; 

o en línea la versión

cd path/to/parent/dir/ && zip -r complete/path/to/name.zip ./* && cd - 

puede dirigir la salida a /dev/null si no desea que la salida cd - a aparecer en la pantalla

-1

alquitrán no funciona para mí.

tar -czpvf filename.zip -C path/to/directory/folder . 

me sale un error al intentar descomprimir tales filename.zip

de Fin de-directorio central de la firma no se encuentra.

jar works fine.

jar cvf filename.zip -C path/to/directory/folder . 
+0

Lo que estás creando es un archivo tar comprimido, no un archivo zip. Es por eso que obtienes el error de descomprimir. Debería obtener una extensión correspondiente, p. ".tgz", no ".zip". –

Cuestiones relacionadas