rababar2014
Goto Top

Dateien verschieben über die shell mit bashscript

Moin admins,
folgende Frage:

Ich habe zwei Files, die ich gerne unabhängig voneinander mit einem bash scirpt via cron in zwei unterschiedliche Ordner verschieben will.

Das Problem ist, die beiden Dateien heissen ähnlich. es sind Dateien, die Preise aus meinem ERP enhalten. Die eine Datei ist aber ein Vollexport, der alle Preise enthält und die andere eine Einzeldatei, die immer nur einzelne Presie enthält.

Jetzt heisst der Vollexport:

Preis__Datum_Uhrzeit.txt

Der Einzelexport

Preis_Artikel_Datum_Uhrzeit.txt.

abgesehen von "Artikel" und den 3 Stellen unterscheiden sich die zwei Files in einem Doppelunterstrich und einem Einzelunterstrich.

Ich dachte also., das Script um beide Datein unterschiedlich zu verschieben, könnte so aussehen:

mv Preis__*_*.txt /ordner
mv Preis_*_*_*.txt /ordner2

Dummerweise erkennt aber die bash den Unterschied zwischen Einzel und Doppelleerzeichen und auch den 2 oder 3 Stellen anscheind nicht und verschiebt bei beiden Befehln jeweils beide Files. Dummerweise finde ich dazu jetzt nichts, wie ich die beiden Files unterscheidlich behandeln kann.

Hat da jemand eine Idee? Danek schonmal

Greetz

Content-ID: 328706

Url: https://administrator.de/contentid/328706

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

132272
132272 07.02.2017 um 18:53:09 Uhr
Goto Top
mv Preis__* /ordner
find ./ -type f -regex '.*/Preis_[^_]+_.*' -exec mv "{}" /ordner2 \;  
Gruß
Kraemer
Kraemer 07.02.2017 um 19:07:58 Uhr
Goto Top
Zitat von @132272:
> find ./ -type f -regex '.*/Preis_[^_]+_.*' -exec mv "{}" /ordner2 \;  
> 

Darf ich mal Fragen, was das +_ bewirkt?
Ich hätte das jetzt nur mit Preis_[^_].* versucht.

Gruß Krämer
132272
132272 07.02.2017 aktualisiert um 19:13:07 Uhr
Goto Top
Zitat von @Kraemer:
Darf ich mal Fragen, was das +_ bewirkt?
mindestens ein Zeichen (Regex) des vorherigen Ausdrucks.
132272
132272 07.02.2017 aktualisiert um 19:14:51 Uhr
Goto Top
p.s. es geht übrigens auch noch einfacher, sorry:
mv Preis__* /ordner
mv Preis_[!_]* /ordner2
rababar2014
rababar2014 07.02.2017 um 19:33:30 Uhr
Goto Top
alles klar, dass versuche ich doch gleich mal morgen.

@ nachfrage: mit welchem Suchbegriff bzw. unter welcher Kommandoreferenz hätte ich diese Syntax finden können? Ich habe etliche ubuntu bash referenzen und faqs durchgewälzt.

Der String [!_] ist mir z.B. noch nirgendwo begegnet...
Kraemer
Kraemer 07.02.2017 um 19:36:45 Uhr
Goto Top
Zitat von @rababar2014:
@ nachfrage: mit welchem Suchbegriff bzw. unter welcher Kommandoreferenz hätte ich diese Syntax finden können? Ich habe etliche ubuntu bash referenzen und faqs durchgewälzt.

Der String [!_] ist mir z.B. noch nirgendwo begegnet...


Zitat von @132272:
(Regex)
132272
132272 07.02.2017 aktualisiert um 21:46:39 Uhr
Goto Top
Zitat von @rababar2014:
@ nachfrage: mit welchem Suchbegriff bzw. unter welcher Kommandoreferenz hätte ich diese Syntax finden können? Ich habe etliche ubuntu bash referenzen und faqs durchgewälzt.

Der String [!_] ist mir z.B. noch nirgendwo begegnet...
Das entstammt der Form her der Regular Expression Syntax ist aber in Wirklichkeit kein Regex sondern gehört zu den sogenannten globbing patterns die die meisten grundlegenden Dateisystem-Befehle unter Linux unterstützen
http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm
und bedeutet in diesem Beispiel so viel wie "Erlaube an dieser Stelle alles was kein(!) Unterstrich ist."
132272
132272 14.02.2017 um 10:35:00 Uhr
Goto Top