Irgendwie stehe ich gerade etwas auf der Leitung. Wenn ich das folgende Skript mit dem Parameter .cpp aufrufe, möchte ich alle Files in allen Unterverzeichnissen aufgelistet haben, die auf *.cpp passen. Leider gibt das Skript gar nichts aus. Warum? #!/bin/bash for i in `find -iname '*$1'` do echo $i done Wenn ich das find-Kommando in der Shell eingebe, funktioniert es. Ralf.
Ralf Schneider wrote:
Wenn ich das folgende Skript mit dem Parameter .cpp aufrufe, möchte ich alle Files in allen Unterverzeichnissen aufgelistet haben, die auf *.cpp passen. Leider gibt das Skript gar nichts aus. Warum?
Weil '*$1' *$1 ergibt. Und "*$1" wuerde *.cpp ergeben. Peter
Am Donnerstag, 10. April 2003 13:15 schrieb Peter Wiersig:
Ralf Schneider wrote:
Wenn ich das folgende Skript mit dem Parameter .cpp aufrufe, möchte ich alle Files in allen Unterverzeichnissen aufgelistet haben, die auf *.cpp passen. Leider gibt das Skript gar nichts aus. Warum?
Weil '*$1' *$1 ergibt.
Und "*$1" wuerde *.cpp ergeben.
Peter
Wenn iicch micch nmmnal hier anscchliiessen darf. Ich will nnaemlich aauf meiner Windoofs Partition aalle .tmp und .swp Dateieen looeschen. Wie biinde iich das nocchh an? Bin bassh-newbie Gruss TP -- Die unaufgeforderte Zusendung einer Werbemail an Privatleute verstoesst gegen §1 UWG und §823 I BGB (Beschluss des LG Berlin vom 2.8.1998, Az: 16 O 201/98).Jede kommerzielle Nutzung der uebermittelten persoenlichen Daten sowie deren Weitergabe an Dritte ist ausdruecklich untersagt!
* Torben Pollmann schrieb am 11.Apr.2003:
Wenn iicch micch nmmnal hier anscchliiessen darf. Ich will nnaemlich aauf meiner Windoofs Partition aalle .tmp und .swp Dateieen looeschen. Wie biinde iich das nocchh an? Bin bassh-newbie
rm *.tmp *.swp löscht im aktuellen Verzeichnis alle Dateien, die nicht mit einem . anfangen und mit .tmp oder .swp aufhören. Vorrausgesetzt, Du hast das Schreibrecht im aktuellen Verzeichnis. Wenn Du auch Dateien mit einem . am Anfang erwischen willst, so mußt Du rm *.tmp *.swp .*.tmp .*.swp sagen, aber so viel ich weiß, gibt es sowas bei Windows sowieso nicht, oder? Wenn Du nicht im aktuellen Verzeichnis sondern woanders löschen willst, heißt das: rm /Pfad/zum/Verzeichnis/*.{tmp,swp} Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht widerstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
Bernd Brodesser wrote:
rm *.tmp *.swp
löscht im aktuellen Verzeichnis alle Dateien, die nicht mit einem . anfangen und mit .tmp oder .swp aufhören. Vorrausgesetzt, Du hast das Schreibrecht im aktuellen Verzeichnis. Wenn Du auch Dateien mit einem . am Anfang erwischen willst, so mußt Du
rm *.tmp *.swp .*.tmp .*.swp
sagen, aber so viel ich weiß, gibt es sowas bei Windows sowieso nicht, oder?
Wenn Du nicht im aktuellen Verzeichnis sondern woanders löschen willst, heißt das:
rm /Pfad/zum/Verzeichnis/*.{tmp,swp}
... und wenn man den Pfad nicht kennt, dann hilft ein "find" weiter, entweder direkt mit der Option -exec und dem Kommando rm, oder aber mit einer Pipe an xargs und der Verwendung von rm. Natuerlich muss man auch hier ein bissl auf die gemeinen Dateinamen aufpassen, sonst geht das evtl. schief. Gruesse, Th. -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)
On Mit, 16 Apr 2003 at 12:46 (+0200), Thomas Hertweck wrote: [...]
... und wenn man den Pfad nicht kennt, dann hilft ein "find" weiter, entweder direkt mit der Option -exec und dem Kommando rm, oder aber mit einer Pipe an xargs und der Verwendung von rm. Natuerlich muss man auch hier ein bissl auf die gemeinen Dateinamen aufpassen, sonst geht das evtl. schief.
z. B. so (ungetestet): find /windows -type f \( -name '*.tmp' -o -name '*.swp' \) -print0 |\ xargs -0 rm -f Jan
Hi auch: Am Donnerstag, 10. April 2003 13:07 schrieb Ralf Schneider:
Irgendwie stehe ich gerade etwas auf der Leitung. Wenn ich das folgende Skript mit dem Parameter .cpp aufrufe, möchte ich alle Files in allen Unterverzeichnissen aufgelistet haben, die auf *.cpp passen. Leider gibt das Skript gar nichts aus. Warum?
#!/bin/bash
for i in `find -iname '*$1'` do echo $i done
Wenn ich das find-Kommando in der Shell eingebe, funktioniert es.
Nur ein Schuß ins Blaue...... AFAIK solltest du den kompletten PATH eines Befehls in einem Script angeben. Also z.B. /usr/bin/find. Bernd -- One OS to rule them all, one OS to find them. One OS to bring them all, and in the darkness bind them In the land of Redmond, where the shadows lie.
Am Donnerstag, 10. April 2003 13:53 schrieb Bernd Tannenbaum:
#!/bin/bash
for i in `find -iname '*$1'` do echo $i done
Wenn ich das find-Kommando in der Shell eingebe, funktioniert es.
Nur ein Schuß ins Blaue...... AFAIK solltest du den kompletten PATH eines Befehls in einem Script angeben. Also z.B. /usr/bin/find.
Nee, es lag am falschen Quoting. Ralf.
participants (7)
-
B.Brodesser@t-online.de
-
Bernd Tannenbaum
-
Jan.Trippler@t-online.de
-
Peter Wiersig
-
Ralf Schneider
-
Thomas Hertweck
-
Torben Pollmann