• 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] find Datei in bestimmten Verzeichissen

Hallo,

ich möchte mit "find" in einem Verzeichnisbaum a alle _Verzeichnisse_ b finden in denen sich Datei c befindet.

Ich habe es mal mit

Code:
find /a -name "b/c" -print

probiert aber der zeigt nichts (vorhanden sind diese aber).

Hat jemand eine Idee

Grüsse
 
Nicht ganz.
Ich würde gerne den ganzen Pfad angezeigt bekommen.

In der Form "/a/irgentwas/b/c".

In dem Verzeichnisbaum befindet sich die Verzeichnis- und Dateikombi. "b/c" mehrfach. Die würde ich gern mit "find" finden.

Grüsse
 
Nein das geht nicht, weil sich zwischen Verzeichnis /a und b/ verschiedene Verzeichnisstrukturen befinden.

z.B.:
/a/irgentwas/b/c
/a/nochwas/b/c
/a/undnochwas/b/c

Wichtig ist mir alle Kombinationen "b/c" zu finden, egal welche Verzeichnisse sich davor befinden.
Wobei "/a" der Anfang der zu durchsuchenden Struktur ist, in der das Unterverzeichnis "b/" ist in dem sich
wiederum die Datei "c" befindet. Ich hoffe das dies so verständlich ist.
Sorry falls das so nicht klar war.

Gruß
 
Das Problem ist das in den zu suchenden Verzeichnisstrukturen Sonderzeichen sind.
Mit Dateiumleitungen oder Pipes gibts da Probleme von daher würde ich das gern direkt mit
einem "find" erledigen.

Gruß
 
Bingo @ Edgar!
Die Syntax von Deinem Befehl ist zwar falsch (nix für ungut), hat mich aber auf die richtige Fährte gebracht.

Code:
find /a -type d -a -name "b" -exec find {} -name "c" \;
Macht folgendes:

1. Sucht ab(wärts) ab "/a" Verzeichnis "b" (Dateityp d = Verzeichnis _und_ Name = "b")
2. (-exec) Sucht in dem Ergebins (hier {}) nach Datei "c" (im Ergebnis z.B. /a/irgentwas/b nach "c" suchen)

Das ist das was ich wollte.

THX
 
Die Syntax von Deinem Befehl ist zwar falsch (nix für ungut), hat mich aber auf die richtige Fährte gebracht.
Tschuldigumg. Das waren wohl die Finger schneller als die Gedanken. Es hätte eigentlich so heißen sollen:
Code:
find /a/*/b -name c
, eventuell noch mit der Verfeinerung:
Code:
find /a/*/b -type f -name c
Also: Suche im Verzeichnis /a/irgendwas/b eine normale Datei mit dem Namen c

Freut mich, daß du zu einem Ergebnis gekommen bist.

Edgar
 
Oben