• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Dateien suchen mit find

Escho

Advanced Hacker
Hallo

Mit dem folgenden Befehl durchsuche ich bestimmte Ordner nach vorgegebenen Dateien. Die Dateien stehen dabei in der Variablen $var:
Code:
find /bin $HOME /opt /usr -type f -name $var -printf "%h "
Was muß ich machen, damit die versteckten Dateien im Heimatverzeichnis von der Suche ausgeschlossen bleiben?

Ein gesundes neues Jahr wünscht
a110.gif


Edgar
 

longman

Advanced Hacker
Hallo Edgar,

komisch, ich hätte gewettet, dass es einen Parameter exclude o.ä. geben müsste,
aber scheinbar gibt es ihn nicht. Hast Du mal versucht mit regulären Ausdrücken Deine
Suche zu gestalten ? Du könntest dann ja eine UND Verknüpfung Deiner zwei Ausdrücke
erzeugen, wobei der zweite Parameter verneint wird.

Ansonsten müsstest Du das auch mit grep -v entsprechend filtern können
(vielleicht so oder anders):
find $HOME -name 'mo*' -type f -print |grep -v -e '/\.[a-z]*'
 
A

Anonymous

Gast
Escho schrieb:
Code:
find /bin $HOME /opt /usr -type f -name $var -printf "%h "
Was muß ich machen, damit die versteckten Dateien im Heimatverzeichnis von der Suche ausgeschlossen bleiben?

eigentlich gibt es unter Linux keine versteckten Dateien, es gibt nur Dateien die bei bestimmten gebräuchlichen Befehlen nicht ohne weiteres (also ohne zusätzliche Einstellungen oder zusätzliche Optionen) angezeigt werden. ;)
Es gibt also keine Eigenschaft "versteckt" sondern nur, wenn der Dateiname mit einem Punkt beginnt, dann sieht man sie nicht immer bei Defaulteinstellungen der Befehle.

Genau so müsste das dann in den find-Optionen definiert werden über den Namen der eben nicht mit einem Punkt beginnen soll.
es müsste also eine Zusätzliche Option
Code:
! -name ".*"
noch in die Optionskette eingebunden werden.

In deinem Fall würde dieses jedoch auf alle Verzeichnissebäume wirken, also nicht nur auf Home sondern auch unter /opt würden "versteckte Dateien" nicht gefunden. Es würde auch nicht verhindern, das in "versteckten Verzeichnissen" Dateien trotzdem gefunden würden.

Der Ausschluss aller Dateien innerhalb der "versteckten Verzeichnisse" die sich direkt in den Homeverzeichnissen befinden würde dann zusätzlich noch so hier aussehen
Code:
! -path "$HOME/.*"

Das Ganze lässt sich noch weiter aufblasen und universeller gestalten, wenn man dann bei find noch mit Regulären Ausdrücken arbeitet.

Wenn man aber dort jetzt zuviel auf einmal macht, einen einzelnen find-Befehl also durch Aneinanderreihung von immer mehr Optionen so universell und allumfassend machen will, können sich sehr leicht und unbemerkt Fehlerquellen einschleichen. Dann wird die eine oder andere Datei dann fälchlicher Weise aus irgend einem Denkfehler heraus doch, oder doch nicht gefunden, und man bemerkt es nicht.
Also wenn möglich, sollte man das Ganze mit den Findoptionen dann doch noch einigermaßen übersichtlich halten, und eventuell lieber Filterkommandos nachschalten oder die Suche über mehrere gezielte find-Befehle einrichten. Das ist einfacher und Sicherer.

robi
 
OP
Escho

Escho

Advanced Hacker
Code:
! -path "$HOME/.*"
Das ist genau das, was ich gesucht habe. Dadurch wird nämlich der Inhalt des Mülleimers und des von mir erstellten ini-Verzeichnisses (fürs DVB-Script) bei der Suche übergangen. Nun funktioniert es tadellos.
Ich wußte gar nicht, daß man die Optionen auch negieren kann. Man lernt nie aus.

Danke für die Hilfe

Edgar
 
Oben