J8iv6k9oi4rv schrieb:
ich frage mich nach 4 Stunden Suchmaschinen-Recherche und man page-Studium, ob ich doof bin oder find.
Ja, "-prune" ist ein wenig kompliziert.
Mein Frage: wie kann es sein, dass, wenn ich das Verzeichnis /mnt/DATA von einer rekursiven Auflistung des gesamten Verzeichnisbaums ausnehmen will, der Befehl
sudo find / -path /mnt/DATA/ -prune
nicht sofort ein Ergebnis liefert (es liegen natürlich noch andere Ordner und Dateien darin in / als /mnt). find kann unmöglich in das Verzeichnis /mnt rekursiv absteigen und dann jede gefundende Datei aufgrund von -prune verwerfen (→ Effizienz)!
Und doch ist das genau das, was passiert. ☺ Der Slash am Ende des Ausdrucks nach "-path" verhindert nämlich zuverlässig einen Match. Mein find
warnt sogar:
1
2
3
4
5
6
7
8
9
10
11
12 | $ find tmp # alles, damit Du siehst, was im Dateisystem ist
tmp
tmp/a
tmp/a/b
tmp/a/b/c
tmp/b
tmp/b/c
tmp/b/c/d
$ find tmp -path tmp/a/ -prune
find: warning: -path tmp/a/ will not match anything because it ends with /.
$ find tmp -path tmp/a -prune
tmp/a
|
Wenn man mal eine Ausgabe mit "oder" dranhängt, sieht man, was passiert:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | $ find tmp -path tmp/a/ -prune -o -print
find: warning: -path tmp/a/ will not match anything because it ends with /.
tmp
tmp/a
tmp/a/b
tmp/a/b/c
tmp/b
tmp/b/c
tmp/b/c/d
$ find tmp -path tmp/a -prune -o -print
tmp
tmp/b
tmp/b/c
tmp/b/c/d
|
Der find
wandert munter durch den Baum. ☺
Etwas anderes als das Verzeichnis ausschließen (später dann noch mehrere) möchte ich erstmal nicht.
Das geht auch, aber Du musst dann den Slash weglassen und mit "-o" alternativ weiter arbeiten wie ich das oben mit dem "-print" gemacht habe.
Ciao
robert