Ein Problem - zwei Lösungen - welche besser

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
zorn
Beiträge: 697
Registriert: 19.08.2003 00:42:10
Wohnort: Berlin
Kontaktdaten:

Ein Problem - zwei Lösungen - welche besser

Beitrag von zorn » 31.01.2006 10:51:07

Hallo Leute,

habe ein Problemchen: Ich möchte in einem Dir + SubDirs alle Files die mit frosch beginnen löschen. Mein Ansatz war

rm `ls -R | grep ^frosch`

Mein Kollege meint nun allerdings, das diese Methode eher suboptimal wäre, weil ls einer Beschränkung von ca. 32000 files unterliegt und find die Ergebnisse sequenziell durchgibt.
Er schlägt also folgendes vor:

find . -name "frosch*" -exec rm {} \;

Gibt es wirklich Vor- Nachteile für einer Methode.

Grüsse
--
kallisti!

Benutzeravatar
Webermaster
Beiträge: 93
Registriert: 27.12.2002 11:44:32

Beitrag von Webermaster » 31.01.2006 11:02:43

Welche Lösung die beste ist kann ich nicht sagen. Ich bevorzuge find und zwar:

Code: Alles auswählen

find . -name "frosch*" -delete
Gruss Alex

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 31.01.2006 11:04:27

find ist auch mein favorit.

Benutzeravatar
Webermaster
Beiträge: 93
Registriert: 27.12.2002 11:44:32

Beitrag von Webermaster » 31.01.2006 11:20:26

Hallo,

ich schon wieder. Unter http://www.heise.de/ct/02/12/216/default.shtml (Frage 4) ist genau dein Problem geschildert. Dort wird über -exec rm {} /; gelöscht. Ich kann mir aber vorstellen, dass ein direktes -delete beim find schneller ist als der Aufruf des rm Befehls.

Gruss Alex

Benutzeravatar
zorn
Beiträge: 697
Registriert: 19.08.2003 00:42:10
Wohnort: Berlin
Kontaktdaten:

Beitrag von zorn » 01.02.2006 09:58:06

ok - kool - das sind eure vorlieben. ich meinte aber eigentlich welche technisch besser ist. z.b. bezogen auf die die genannten einschränkungen, von denen ich vorher noch nie gehört hatte. idee?
--
kallisti!

Gimli
Beiträge: 57
Registriert: 02.08.2004 17:45:37

Beitrag von Gimli » 01.02.2006 10:37:00

Bis auf die von dir angesprochene Begrenzung der ersten Methode fällt mir noch ein zweiter Vorteil ein, welcher für find spricht:
Wenn du find verwendest, wird alles von einem Programm erledigt, was wahrscheinlich resourcenschonender ist. Vielleicht ist es auch schneller, das müsstest du mal ausprobieren.

Ich weiss aber nicht, weshalb dir der technische Aspekt bei so einem kleinen Problem so wichtig ist. Ich finde find übersichtlicher und kürzer, und das ist der einzige Grund wesewegen ich es verwenden sollte. Die Pipes sind zwar eine sehr nützliche Erfindung, das heisst aber nicht dass man sie immer verwenden muss.

Wie gesagt, wenn du das in ein Script einbaust, und das Script irgendwann wiedermal betrachtest, musst du beim find-Aufruf weniger lange überlegen, was letztlich gemacht wird als beim anderen. Wäre zumindest bei mir so.

mfg Gimli

yeti

Re: Ein Problem - zwei Lösungen - welche besser

Beitrag von yeti » 01.02.2006 10:44:38

Code: Alles auswählen

rm `ls -R | grep ^frosch`
... wird wohl noch der Meinung sein, die Verzeichnisse sortieren zu wollen. Also wenn Du nicht unbedingt Wert darauf legst, sie in lexikografischer Reihenfolge zu lynchen, dann ist dieser zusätzliche Rechenzeit-, Speicher- und Sortier-Aufwand purste Verschwendung.
"ls" ist im Wesentlichen dazu gedacht, die Hierarchie für den Mensch lesbar aufzubereiten.
"find" ist für genau die gesuchten Dinge gedacht: Files und Verzeichnisse nach gewissen Kriterien selektieren und ggfs Aktionen darauf ausführen.

Antworten