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-Key: 328706

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

Printed on: April 24, 2024 at 01:04 o'clock

Mitglied: 132272
132272 Feb 07, 2017 at 17:53:09 (UTC)
Goto Top
mv Preis__* /ordner
find ./ -type f -regex '.*/Preis_[^_]+_.*' -exec mv "{}" /ordner2 \;  
Gruß
Member: Kraemer
Kraemer Feb 07, 2017 at 18:07:58 (UTC)
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
Mitglied: 132272
132272 Feb 07, 2017 updated at 18:13:07 (UTC)
Goto Top
Zitat von @Kraemer:
Darf ich mal Fragen, was das +_ bewirkt?
mindestens ein Zeichen (Regex) des vorherigen Ausdrucks.
Mitglied: 132272
132272 Feb 07, 2017 updated at 18:14:51 (UTC)
Goto Top
p.s. es geht übrigens auch noch einfacher, sorry:
mv Preis__* /ordner
mv Preis_[!_]* /ordner2
Member: rababar2014
rababar2014 Feb 07, 2017 at 18:33:30 (UTC)
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...
Member: Kraemer
Kraemer Feb 07, 2017 at 18:36:45 (UTC)
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)
Mitglied: 132272
132272 Feb 07, 2017 updated at 20:46:39 (UTC)
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."
Mitglied: 132272
132272 Feb 14, 2017 at 09:35:00 (UTC)
Goto Top