Dateien archivieren

T

topvbal

Grünschnabel
Guten Morgen

Ich möchte Dateien komprimieren und verschieben.
Die Dateien heißen beispielsweise test_a und sollen komprimiert test_a.zip heißen. Wie bekomm ich das hin ohne jeden Datei einzeln manuell zu zippen.

Die zu archivierenden Dateien sollen mit find ausgewählt werden
Code:
find . -name 'test_*' -exec zip {} \;

Wie schaffe ich das jetzt das die Dateien gezipt wie oben genannt heißen und noch verschoben werden?

Ich danke schon mal voraus, für eure Hilfe
 
Hallo

Ich benutze zwar kein zip, aber IMHO sollte sowas gehen.
Code:
 find . -name "file" -exec zip "{}" "{}" \;
Falls du Leerzeichen im Dateinamen hast, solltest du besser mit -print0 und xargs arbeiten.
Dann gibt es auch noch einen Parameter für suffix (-n)?
Den Rest findest du in der Manpage.
Du kannst natürlich auch in einer Schleife arbeiten.
Code:
for I in $(find . -name "file"); do
zip $I $I
mv  $I /neuer/Pfad/${I##*/}
done

Gruß Wolfgang
 
Zuletzt bearbeitet:
Wolfgang schrieb:
Code:
 find . -name "file?" -exec zip "{}" "{}" \;
Weswegen die doppelten geschweiften Klammern? Wird dann die Originaldatei nicht ueberschrieben? Das koennte Probleme ergeben.
 
rikola schrieb:
Weswegen die doppelten geschweiften Klammern? Wird dann die Originaldatei nicht ueberschrieben? Das koennte Probleme ergeben.
Probier es aus. ;)
Wie gesagt, ich habe hier kein zip. Aber IMHO fügt zip automatisch den Suffix .zip an den gegebenen Namen an. Es sei denn, du gibst mit -n einen anderen an.

Gruß Wolfgang
 
zip fuegt die Endung automatisch an, wenn man nur ein Argument uebergibt, bei mehreren wird das erste als Archiv interpretiert. Wenn es identisch mit dem zweiten ist, kommt bei mir die Fehlermeldung
Code:
tg@nachtigaller:~$ zip tag_words.pdf tag_words.pdf 
        zip warning: missing end signature--probably not a zip file (did you
        zip warning: remember to use binary mode when you transferred it?)

zip error: Zip file structure invalid (tag_words.pdf)
Mit nur einem "{}" sollte es dann allerdings gehen.

Um die gepackte Datei zu entfernen, muesste man ein -m hinzufuegen:
Code:
tg@nachtigaller:~/tmp$ find ./ -name uv280.ps -exec zip -m {}.zip {} \;
funktioniert bei mir.
 
Zuletzt bearbeitet:
Hallo
So nun habe ich das tatsächlich mal schnell installiert.
$ zip -v
Copyright (C) 1990-2005 Info-ZIP
Type 'zip "-L"' for software license.
This is Zip 2.31 (March 8th 2005), by Info-ZIP.
Compiled with gcc 3.3.5 (Debian 1:3.3.5-8) for Unix (Linux ELF)...

Diese Version verlangt einen Namen als ersten Parameter und als zweiten die Datei(liste).

Also funktioniert von mir obig geschriebenes genau wie ich es erwartet hatte.
Das hier dagegen nicht:
$ find . -name "file?" -exec zip {} \;

zip error: Nothing to do! (./file1.zip)

man zip
... If the name of the zip archive does not contain an extension, the extension .zip is added. If the name already contains an extension other than .zip the existing extension is kept unchanged.
 
Vielen Dank an euch
Das hat mir wirkliche sehr weitergeholfen.
Danke für die Mühe.

Jetzt gibt es noch ein kleines Prob(Hoffe ich zumindest)

Es sollen Dateien mit der Endung .log gepackt werden. Jedoch bringt mir das folgende Fehlermeldung:

zip warning: missing end signature--probably not a zip file (did you
zip warning: remember to use binary mode when you transferred it?)

zip error: Zip file structure invalid (./test1.log)

Wär geil wenn ihr mir auch dabei noch helfen könntet.
 
Was hast du probiert, als dieser Fehler kam?
 
Ich habe folgendes Kommando ausgeführt

Code:
find . -name "test*.log" -exec zip {} {} \;

Daraufhin kam folgende Fehlermeldung

zip warning: missing end signature--probably not a zip file (did you
zip warning: remember to use binary mode when you transferred it?)

zip error: Zip file structure invalid (./test1.log)
 
Wenn du diesen Thread mal genau durchliest, solltest du erkennen dass deine Version von zip wohl eine andere Syntax verlangt.
Also solltest du mal in der Manpage nachlesen.
Vermutlich musst du rikola seinen Vorschlag umsetzen.

Gruß Wolfgang
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Werte aus Dateien lesen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Per Shell Script CSV-Datei auslesen, anschliessend Dateien umbenennen

Probleme mit Shell-Script (Listen, Strings, etc.)

Zurück
Oben