staging.inyokaproject.org

find

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels find.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3351

shiro schrieb:

Gibt's da eine technische Erklärung zu, was da passiert? Ich komme beim besten Willen nicht drauf.

Wie kB schon schrieb, startet "find" mit dem "-exec" ein ausführbares Programm. Es scheint, dass du aber Befehle in einer Shell abarbeiten willst.

Nicht wirklich, denn wenn ich das wollte, würde ich eine solche ja mit sh -c '...' aufrufen. Aber ich verstehe jetzt, was Du meinst, und wo der Haken ist:
Bei x=... handelt es sich um einen Shell-Befehl und -exec akzeptiert aber nur direkte Programmaufrufe. Da war also bei mir die Verstopfung in der grauen Masse. Noch ein Grund mehr für das Hinzufügen meiner 3 Beispiele, auch wenn ich mir mit meiner obigen Frage selbst ein Ei gelegt habe.

Danke für die Erleuchtung.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Wieso wurde hier umständlich "Datei" zu "Dateiname" verändert?

`-exec KOMMANDO ;`

wendet auf jeden gefundenen Dateinamen einzeln den Befehl `KOMMANDO` an. Nach einem Argument `-exec` im [#Aufruf Aufruf] müssen noch mindestens 2 weitere Argumente folgen. Aus dem ersten und allen weiteren Argumenten, die nicht das Semikolon „`;`“ sind, wird ein Programmaufruf mit Name und Argumenten erstellt, dabei wird das spezielle Argument „`{}`“ von find durch den gefundenen Dateinamen (Eigenname mit Pfad) ersetzt. Das erste Semikolon beendet die Konstruktion des Programmaufrufs. Damit es nicht unbeabsichtigt von der aufrufenden Shell interpretiert wird, muss es immer quotiert oder maskiert werden.

Das -exec bearbeitet die Datei, nicht den Namen.

Ein wc -c /etc/passwd gibt in den seltensten Fällen 12 aus.

Das "immer" im letzten Satz kann auch weg.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

UlfZibis schrieb:

user_unknown schrieb:

Ich weiß nicht, wieso man ./ vermeiden will/sollte.

Hm, folgendes funktioniert zu meiner Überraschung tatsächlich:

convert -quality 80% ./Front.jpg q80/./Front.jpg 

... ich hatte aber mal Fälle, wo das zu Problemen führte, ich "schwöre", kann mich beim besten Willen aber nicht mehr erinnern.

Wenn die Erinnerung wiederkommt, dann kannst Du ja berichten. Der Punkt steht immer für das aktuelle Verzeichnis, so dass diese 2 Befehle das gleiche sind:

1
2
3
4
stefan@t530:~$ ls -l .bashrc 
-rw-r--r-- 1 stefan stefan 7858 Jan  4 14:52 .bashrc
stefan@t530:~$ ls -l ././././.bashrc 
-rw-r--r-- 1 stefan stefan 7858 Jan  4 14:52 ././././.bashrc

Zumindest sieht es hässlich aus.

Du siehst es ja nicht, in einem -exec-Kommando (außer beim Test mit echo).

Um zu vermeiden, dass die Thumbnails in klein/ wieder verkleinert werden

An das Problem hatte ich dabei gar nicht gedacht 💡

kann man -maxdepth verwenden:

... vergrößert den Rechercheaufwand UND die Tipp-Arbeit aber nochmals. Vermutlich ist der Startpunkt-Trick deshalb so beliebt.

Mein Eindruck ist nicht, dass der Startpunkttrick sonderlich populär wäre. Die Tipparbeit einer Forschleife ist, wenn auch geringfügig, kleiner.

Das Hauptproblem ist jedoch, dass die Beispiele unter der Überschrift "Verkettung von Kommandos" laufen, und der Trick und der Kontext, in dem er Sinn macht, nicht vorgestellt wird oder wurde. Dass plötzlich nicht mehr rekursiv gesucht wird, kann man da leicht übersehen. Dass DIR find lieber ist, als eine for-Schleife ist ja schön und gut, aber der Artikel soll sich nicht an Experten wenden, die dann abhaken können, dass dieser Trick auch im Wiki erwähnt wird.

... Ich würde dann aber noch dazuschreiben, dass erst eine Verkleinerung des Bildes erzeugt wird, und dieses auf das gleiche Dateidatum gesetzt wird, wie das Original - nicht jeder kennt sich mit touch aus.

Dann müsste ich aber auch grep und | erklären. Ich denke, bis an diese Stelle dringen nur erfahrenere User vor.

Das will ich nicht hoffen.

Denen kann man zumuten, nach touch selbst zu suchen, falls sie das wirklich nicht kennen. Ich will das nicht überladen, es geht nur um ein exemplarisches Beispiel zur einfachen Verkettung.

Tja, wieso dann der Trick mit der Auswahl der Dateien nach Filemuster via Startpunkt? Und das gleich bei allen 3 Beispielen.

Das zweite Beispiel mit grep hat gar nichts speziell mit find zu tun - Pipes sind ein Feature der Shell und können mit jedem anderen Programm genauso genutzt werden.

... und im 3. Beispiel habe ich die Funktion ja dennoch (indirekt) erklärt.

  • Verketten mittels &&, | und <<< etc.

Wenn man nicht zwischendurch weitere find-Filter einbaut, dann finde ich es einfacher, ein ad-hoc-Script zu schreiben:

Damit sind wir aber dann wieder bei all den schon erwähnten unangenehmen Erfahrungen und Aufwand, die ich mit "mal schnell ein Skript schreiben" reichlich erlebt habe.

Ja, der Wikiartikel ist nicht auf einen einzelnen Benutzer zugeschnitten, der Schwierigkeiten mit Skripts hat, aber sich in die Untiefen der find-exec-Syntax hineinfuchsen will, und dabei einen Globbingtrick verwenden will.

Grundmuster der Findbefehle ist die rekursive Suche. Beim Globbing kann man oft den Befehl einfach mit dem Dateimuster hinschreiben oder eine Schleife benutzen.

Und hier soll es doch erst mal um die Möglichkeiten mit findgehen.

Dass im gleichen Zug wieder die Startparameter als Suchmuster eingesetzt werden, und dann auch noch mit 01 beginnen sollen, ist m.E. over the top. Typischerweise sucht man mit find nun mal rekursiv und würde eine Schleife für so was nutzen - Dein Vorgehen ist zwar für Dich schlüssig, aber nicht für die Allgemeinheit zu empfehlen.

... aber zu Hauf in der Allgemeinheit von Beispielen im Netz zu finden. Scheint also beliebt zu sein (aus wohl unerfindlichen Gründen 😉 )

Wie gesagt, mir begegnet das nicht zu Hauf.

Man kann Shellbefehle ohne Startpunkt=-type f (ordinäre Datei) benutzen und Startpunkte filtern ohne -exec-Varianten filtern.

Verstehe nicht, was Du meinst.

Der Trick, die Suche über die Startpunkte einzuschränken, hat nichts damit zu tun, ob man mehrere -exec-Aufrufe miteinander verkettet, oder die Ausgabe durch grep filtert. Das sollte man nicht beides zugleich zeigen und den Leser knobeln lassen, wieso hier kein -name "*.iwas" verwendet wird. Es soll sich eben nicht an Experten richten. Die sollten mit der Manpage zu arbeiten wissen und im Zweifelsfalle im Forum nachfragen.

Um zu verstehen, was das 3. Beispiel macht,

Es zeigt im wesentlichen, wie man Dateiendungen der Funde im selben Verzeichnis wandeln und weiterverwenden kann und bedingt verkettet, egal welches Programm das dann nutzen soll, bei mir war's halt ad hoc ffmpeg.

muss ich wieder mitbekommen und erraten, wieso Du nicht nach -name "*.flac" suchst, das .flac-Format kennen, ffmpeg ...

Wie gesagt, hier landet nur der fortgeschrittene User,

Nein, hier soll jeder landen können. Vielleicht nicht beim ersten Anlauf.

dem kann man das im Zweifel zumuten. ...

Jetzt muss ich aber zum Grillen!

Hoffentlich überlebst Du das. 😉 Wir brauchen Dich noch.

Meinst Du? Also Deine Hoffnung hat sich erfüllt.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3351

user_unknown schrieb:

wendet auf jeden gefundenen Dateinamen einzeln den Befehl KOMMANDO an. .... }}}

Das -exec bearbeitet die Datei, nicht den Namen.

Finde ich gar nicht so schlecht, denn es gibt Fälle, wo lediglich mit den Dateinamen gearbeitet wird oder auch nur mit der Datei, und nicht die Datei. Und find spuckt ja keine Dateien aus, sondern Pfade zu Dateien. Insofern fände ich "Dateipfad" am besten, auch weil ja außer mit dem "Trick" immer ./ vorangestellt wird.

Viel kritischer finde ich "Befehl KOMMANDO", weil das eine Einladung ist, in die Falle zu tappen, in die ich getappt bin. IMHO wäre "Programmaufruf PROGRAMM" (bzw. "PROGRAMMAUFRUF", leider ein bisschen lang) eindeutiger.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3351

  • cd ; find V* 

    wechselt ins Home-Verzeichnis und die aufrufende Shell wertet dort den Glob V* aus. Normalerweise gibt es dort die Order Videos und Vorlagen und dann ist für find der Aufruf äquivalent zu:

    find -P Videos Vorlagen -print 

Da ist was faul, und es könnte zu der Annahme verleiten, dass die Option -P die Suche ab dem Home-Verzeichnis bewirkt.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3351

user_unknown schrieb:

Das Hauptproblem ist jedoch, dass die Beispiele unter der Überschrift "Verkettung von Kommandos" laufen, und der Trick und der Kontext, in dem er Sinn macht, nicht vorgestellt wird oder wurde. Dass plötzlich nicht mehr rekursiv gesucht wird, kann man da leicht übersehen.

Das stimmt, den Trick sollte man erst mal isoliert im separaten Beispiel vorstellen. Immerhin hat kB den im Abschnitt Startpunkte als Hinweis angedeutet. So dachte ich, das reicht vielleicht.
Er vermeidet auch den Anfänger-Fallstrick, wenn man in gewohnter Weise Globs ohne Quotes hinschreibt. Hinter -name muss man ja genau umgekehrt denken, als bei fast allen anderen Befehlen.

Tja, wieso dann der Trick mit der Auswahl der Dateien nach Filemuster via Startpunkt? Und das gleich bei allen 3 Beispielen.

Ihn bzgl. Verkettung und Shell-Einbettung anzuwenden finde ich dennoch sinnvoll, da "*.flac" viel kürzer als ". -name "*.flac" -maxdepth 1" ist und so den Blick auf das hier wesentliche erleichtert. Und mit -maxdepth hatte ich auch schon so machen Recherche- und Probieraufwand, vor allem wenn mir nach längerer Nichtnutzung dann auch noch erst mal nur -depth in den Sinn kam. Dann ist's vorbei mit eben mal einen Suchbefehl ausführen und man muss dann erst mal in den Browser und sich wieder durch den find-Artikel quälen.

Das zweite Beispiel mit grep hat gar nichts speziell mit find zu tun - Pipes sind ein Feature der Shell und können mit jedem anderen Programm genauso genutzt werden.

Es ist ein Beispiel zur Einbettung einer einfachen Shell-Funktionalität. Wenn Dir ein besseres kürzeres Beispiel dafür einfällt ... gerne.

Es soll sich eben nicht an Experten richten. Die sollten mit der Manpage zu arbeiten wissen und im Zweifelsfalle im Forum nachfragen.

Ich bevorzuge dennoch erst mal das Wiki wegen der angenehmeren, übersichtlicheren Darstellung und der Beschränkung auf "Normal"-Fälle.

Ich denke, ich bin Deinen Wünschen zur besseren Beschreibung und zum Verzichten auf Überflüssiges / Verwirrendes schon ziemlich nahe gekommen, siehe meine Änderungen am 4. Juli von 13:14 - 13:57 h. Leider hat die kB wieder vernichtet. Dabei war er es doch, der mich aufforderte, für Ergänzungen die Baustelle zu benutzen. Auf Fragen reagiert er leider auch nicht, außer wenn er sie für seinen Überheblichkeitsdrang nutzen kann. Ich neige mittlerweile dazu: "Macht den Artikel ohne mich."

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

UlfZibis schrieb:

[…] Auf Fragen reagiert er leider auch nicht, außer wenn er sie für seinen Überheblichkeitsdrang nutzen kann.

Auf welche konkrete, nicht rhetorische Frage habe ich nicht geantwortet?

Bei Bearbeitungen in Baustellen diskutiere ich grundsätzlich keine Zwischenstände; nach meiner Meldung als fertig gestellte Baustelle jedoch gerne.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3351

kB schrieb:

Auf welche konkrete, nicht rhetorische Frage habe ich nicht geantwortet?

Hatte ich schon in 9479182 verlinkt.

Bei Bearbeitungen in Baustellen diskutiere ich grundsätzlich keine Zwischenstände;

Das hat gewaltige Nachteile, Weil es dann einfach zu viel auf einmal ist, was diskutiert werden könnte/müsste und man kaum noch nachvollziehen kann was verändert wurde und wo sich ungewünschte Änderungen eingeschlichen haben.
Wenn ein Haus gebaut wird, können sich auch Fehler einschleichen. Die korrigiert man, sobald sie entdeckt werden, und nicht erst eine Woche vor Schlüsselübergabe, wo dann im schlimmsten Fall das halbe Haus wieder abgerissen werden muss.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

UlfZibis schrieb:

kB schrieb:

Auf welche konkrete, nicht rhetorische Frage habe ich nicht geantwortet?

Hatte ich schon in 9479182 verlinkt.

In diesem verlinkten Post verweigerst (1.) DU eine Antwort auf MEINE ernst gemeinte Frage (Nicht, wie du behauptest, umgekehrt!) mit DEINEM überheblichen Hinweis auf die vorherige Diskussion. Dieser vorherigen Diskussion entnehme ich allerdings, dass auch andere Leser deine Vorschläge zumindest kritisch und problematisch sehen.

2. Außerdem kommentierst Du:

Deine Antwort wirft mehr Fragen auf, als sie welche beantwortet.

Es tut mir leid, dass Du meine Erklärung auf Deine Frage nicht verstanden hast. Ich sehe darin aber keine Rechtfertigung, mir Überheblichkeit vorzuwerfen.

3. verweist Du auf einen weiteren Post mit 2 Fragen.

  • Davon ist die erste aus meiner Sicht eine rhetorische Frage, die keine Antwort benötigt, weil diese als allgemein bekannt gelten kann: Jeder, der für einen Wiki-Artikel den Editor öffnet, wird auf die zu beachtenden Regeln hingewiesen, u.a.: Wiki/Referenz

  • Die zweite Frage ist ebenfalls eine rhetorische Frage, denn eine Antwort würde erfordern, dass ich meine gesamte geplante Überarbeitung bereits vorweggenommen beschreibe. Warte doch bitte einfach ab, bis ich meine Überarbeitung zur Diskussion stelle, statt mir Überheblichkeit vorzuwerfen.

linux_joy

Anmeldungsdatum:
6. Februar 2008

Beiträge: 803

Hallo zusammen,

bzgl. 9470996 von mir u. 9479120 von trollsportverein:
Ich habe es mir erlaubt, im Abschnitt „Alternativen“ zu ergänzen:

  • Wer lieber mit GUI nach Dateien suchen möchte, kann dafür das Programm KFind verwenden.

  • Desktopsuchmaschinen arbeiten teilweise ebenfalls grafisch, allerdings (zusätzlich) mit inhaltlicher Analysierung der Dateien.

Wg. dem vorhergehenden „(zusätzlich)“: → 9480423 von mir.

schwarzheit Team-Icon

Supporter
Avatar von schwarzheit

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 5356

linux_joy schrieb:

Ich habe es mir erlaubt, im Abschnitt „Alternativen“ zu ergänzen:

  • Wer lieber mit GUI nach Dateien suchen möchte, kann dafür das Programm KFind verwenden.

Klar und dafür holt man sich dann den ganzen KDE Kram ins System.

Kfind gehört zu Kubuntu. Zu keinem anderen System. Und generell hat das im find-Artikel nichts zu suchen.

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 941

Klar und dafür holt man sich dann den ganzen KDE Kram ins System.

https://packages.ubuntu.com/noble/kfind

oder man schaut ob gutes YAD Frontend irgendwo zu finden ist.., oder bastelt sich selbst Eines.. 😎 (finde meins auch übersichtlicher als kfind, Ausgabe in seperatem Fenster, Ergebnisse können auch selektiert Anwendungen zugeführt werden)

Bilder

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

linux_joy schrieb:

[…]

  • Wer lieber mit GUI nach Dateien suchen möchte, kann dafür das Programm KFind verwenden.

  • Desktopsuchmaschinen arbeiten teilweise ebenfalls grafisch, allerdings (zusätzlich) mit inhaltlicher Analysierung der Dateien.

Ein Verweis auf Desktopsuchmaschinen als Alternative ist sinnvoll in diesem Artikel, nicht jedoch ein Verweis auf KFind; das sit ein konkretes Beispiel für eine Desktopsuchmaschine speziell für Kubuntu.

Ich bin fertig mit der Überarbeitung und eröffne für die neue Fassung nun die Diskussion.

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3351

Marantkurz schrieb:

oder man schaut ob gutes YAD Frontend irgendwo zu finden ist..,

Was ist YAD?

oder bastelt sich selbst Eines.. 😎 (finde meins auch übersichtlicher als kfind, Ausgabe in seperatem Fenster, Ergebnisse können auch selektiert Anwendungen zugeführt werden)

Sieht interessant aus. Wie kommt man denn da dran?

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 941

@UlfZibis

Was ist YAD?

Ernsthaft? Ab und zu taucht das auch hier im Forum auf.

Wie kommt man denn da dran?

Denke Das ist ne praktikable Lösung: Link