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
Ein Problem - zwei Lösungen - welche besser
Ein Problem - zwei Lösungen - welche besser
--
kallisti!
kallisti!
- Webermaster
- Beiträge: 93
- Registriert: 27.12.2002 11:44:32
Welche Lösung die beste ist kann ich nicht sagen. Ich bevorzuge find und zwar:
Gruss Alex
Code: Alles auswählen
find . -name "frosch*" -delete
- Webermaster
- Beiträge: 93
- Registriert: 27.12.2002 11:44:32
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
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
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
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
Re: Ein Problem - zwei Lösungen - welche besser
Code: Alles auswählen
rm `ls -R | grep ^frosch`
"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.