Geht so was in der Shell?

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich hätte mal wieder eine Shellscript-Frage wo ich keinen Plan habe ob das überhaupt geht: Ich hole mir mit find eine Liste von Dateinamen und geh über diese dann mittels einer for Schleife. Jetzt habe ich ein zweites Verzeichnis wo diese Dateien drin sein können. Geht es irgendwie den find so zu erweitern, dass er zwei Verzeichnisse abgrast? Diese beiden Verzeichnisse liegen auf derselben Ebene im selben Elternverzeichnis
Im Prinzip so was
Code:
for i in $(find ./cur ./new -type f -ctime -4) ; do
....

Danke für jeden Tipp + Gruss

tobi

p.s. ja ich weiss dass ich einfach zwei Schleifen machen könnte ;-)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Du bist nur zu faul zum Ausprobieren, er grast *gg*

Der find hat als Option auch den -exec so dass man sich häufig die for-Schleife sparen kann.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ganz ehrlich habe ich es ned probiert weil ich dachte so kann dat ja nie gehen ;-)
Ich werd gleich probieren und sorry fürs dumme Fragen ;-)
Das mit dem -exec wär vielleicht mal noch eine Überlegung wert (vergess den immer wieder). Aber in dem Fall gehts wohl ned, weil ich mit den Files mehrere Kommandos anwende.

Danke und Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Aber in dem Fall gehts wohl ned, weil ich mit den Files mehrere Kommandos anwende.

Schau dir mal in den Skripten unter /usr/syno/etc/rc.d an, wie man in einem Shell-Skript eine Shell-Funktion bastelt. Soetwas kann man natürlich auch dem -exec (ev. mit xargs) übergeben. Es geht also immer, wenn man will, aber es ist natürlich auch nicht verkehrt, es über eine for-Schleife zu realisieren. Allerdings musste manchmal Seiteneffekte in Kauf nehmen: die Kommando-Substitution, als das $(...), muss in den Shell-Buffer (meist 8 KB) hineinpassen ... meist ist daher bei 'großen' Schleifen eine Pipe-Übergabe und ein Shell-read besser als ein for.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@itari
meine Schleife ist bereits in einer Shellfunktion. Von dem her wird es schwieriger das nochmal in eine Fkt auszulagern. Am Ende hätte ich dutzende Funktionen mit nur einer Codezeile drin ;-)
A propos Seiteneffekte: Die hatte ich mit dem verd*** Leerzeichen im Pfad schon zu genüge. Weder escapen noch Anführungszeichen haben wirklich geholfen. Ein Kommando ist immer darüber gestolpert :) Letztlich hat nur ein cd ins Verzeichnis mit dem Leerzeichen und dann ein relativer find geholfen.

Falls es jemanden interessiert was ich damit mache: Das Script soll mir aus den Mails meiner Blocksoftware (fail2ban) die IPs der "Täter" zusammen mit den relevanten Logzeilen rausziehen und an die abuse-Adresse des jeweiligen Providers verschicken
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat