• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Zip Archivierungs script

Guten morgen,

ich habe probleme einige Zip archivierungen mit Erfolg zu erstellen. Ich habe einen Linux Script wo unter anderem auch folgendes drinnen steht :
Code:
zip -9 -r -T (Name des Archivs) VCXYZ6*
zip -9 -r -T (Name des Archivs) VCXYZ7*
zip -9 -r -T (Name des Archivs) VCXYZ[!6]* VCXYZ[!7]*

Dieser script sollte in den ersten 2 zeilen alle files archivieren die mit VCXYZ beginnen und danach eine 6 haben, die zweite Linie hat das selbe prinzip wie die erste, nur mit einer 7.
Diese beiden Zeilen funktionieren auch einwandfrei, der Fehler muss in der dritten Zeile sein, denn er Archiviert diesselben Dateien wie in den ersten 2 Scripts, soll aber alle anderen Archivieren. Ich vermute der Fehler liegt an den "*", denn ohne, wenn man 2 "normale" dateinamen statdessen hinschreibt (also ohne die *) funktioniert es einwandfrei.
Könnte mir jemand vielleicht dabei helfen eine Lösung zu finden bzw. den richtigen Syntax für sagen?

Grüße,
Fdik
 
A

Anonymous

Gast
Versuch mal
Code:
zip -9 -r -T (Name des Archivs) VCXYZ[^67]*
Manpage schrieb:
If the first character following the [ is a ! or a ^ then any character not enclosed is matched.
laut Manpage sollte das Ausrufezeichen zwar auch gehen, ich habe das Ausrufezeichen dort jedoch noch nie genutzt.
Außerdem so wie du es geschrieben hast, werden sowieso alle genommen, alle mit 6 oder 7 nur einmal, und alle ohne 6 oder 7 sogar 2 Mal

robi
 
Vielen Dank für deine Antwort.
Es funktioniert einwandfrei :D

Aber eine letzte Frage hätte ich da noch, einige Files sind zu groß und ich möchte die auch noch einzeln packen. Ich hätte da an folgendes gedacht :

Code:
zip -9 -r -T (Name des Archivs) VCXYZlpo.exe VCXYZsxc.exe
zip -9 -r -T (Name des Archivs) [!VCXYZlpo.exe] [!VCXYZsxc.exe] VCXYZ[^67]*

funktioniert aber auch nicht, das habe ich mir ja auch schon denken können eigentlich, und wenn ich alles mit VCXYZ[^67]* in die [] schreibe wird zu viel ausgegrenzt, was ja wohl logisch ist. Bin aber leider Linux neueinsteiger und kenne mich mit dem Syntax leider überhaupt nicht aus ...

Also, vielen Dank nochmals für deine vorherige Antwort.

Gruß,
Fdik
 
A

Anonymous

Gast
Fdik schrieb:
einige Files sind zu groß und ich möchte die auch noch einzeln packen.
Hier hast du ein Problem, den Begriff "einige" versteht zB der Computer nicht, du musst ihm "ganz genau" sagen was oder was nicht.
Den Befehl den du dir ausgesucht hast
Code:
zip -9 -r -T (Name des Archivs) ...............
Dort wo die Pünktchen sind, müssen genau die Dateinamen stehen, die mit diesem Befehl gezipt werden sollen. Du verwendest die "Pathname Expansion" der Shell für das Aussortieren und Zusammensuchen der Dateinamen. Diese ist allerdings nicht so flexibel wie du sie gerne haben möchtest. Die Auswahl der Dateien erfolgt von der Shell selbst nach den Mustern oder Dateinamen die du angibst. Das Prinzip kannst du in der Manpage oder in fast jedem Shell-Anfägner-Buch finden. Du kannst das immer selbst vorher ausprobieren, welche Dateinamen die Shell findet.

gehe auf einer Konsole einfach in das selbe Verzeichnis, in dem dein Script dann arbeiten soll. Dort nimmst du einfach den Befehl ls
und gibst da alles an was du da hinten an den Befehlen angehängt hast, oder willst. Dabei wirst du dann jeweils die Dateinamen sehen die dabei in diesem Verzeichnis gefunden würden, und kannst selbst sehen ob das so richtig ist, oder nicht. Dieser Befehl
Code:
zip -9 -r -T (Name des Archivs) [!VCXYZlpo.exe] [!VCXYZsxc.exe] VCXYZ[^67]*
würde genau die Daten zippen die
Code:
ls [!VCXYZlpo.exe] [!VCXYZsxc.exe] VCXYZ[^67]*
dir anzeigen würde.


Da die Möglichkeiten die die Shell an dieser Stelle hat, hier stark beschänkt sind, müssten die Dateinamen bei komplizierternen Auswahlen zB mit einem zusätzlichen weiterem Befehl, der eben bessere Optionen beherrscht, zusammengesucht werden und dann das Ergebnis in deine jeweiligen Befehlszeile eingebaut werden.

Für einige hier sollte sowas auch überhaupt kein Problem sein, allerdings ohne irgendwelche Grundkenntnisse wirst du solche dann nicht mehr ganz einfach zu verstehende Befehlszeilen nicht verstehen und damit sie auch nie erfolgreich ändern oder deinen Bedürfnissen anpassen können. Hinzu kommt, wir müssten dazu auch erstmal etwas genauer wissen was da überhaupt für Dateien alles da sind, und was du überhaupt genau machen willst, eventuell noch warum, um eventuelle einfachere Alternativen in Erwägung zu ziehen. Jedenfalls mit unklaren Definitionen wie "einige" oder "ist mir zu groß" können wir da auch nichts anfangen. Und wenn da hier jemand dann eine funktionierende Syntax oder ein fertiges Script für dein Problem erstellen würde, hätte das dann für dich ja auch überhaupt keinen Lerneffekt. Also ganz ohne selbst etwas dazu lernen und sich selbst etwas mehr mit dem Problem zu beschäftigen, wird es auf Dauer nichts werden.

robi
 
Oben