Ich möchte nach allen Dateien suchen, deren Pfadnamen mehrere Wörter enthalten (word1
, word2
), ohne eine bestimmte Reihenfolge zwischen ihnen.
Beispiele für übereinstimmende Dateien sind:
word1bar/fooword2/myfile
fooword2/word1bar/myfile
fooword2/bar/word1myfile
Welcher Befehl kann die Aufgabe lösen?
Ich vermute, dass ein Befehl wie dieser funktionieren wird:
find . -regex regexpattern
Danke.
Meine Lösung mit locate
Verbessern Sie die Suche nach Dateien anhand von Pfadnamen mit der Locate- und Grep-Pipeline
Akzeptierte Antwort:
Mit einem einzelnen Muster (Regex oder Shell) ist das schwierig, aber seit find
mehrere Bedingungen annehmen kann, können wir verwenden
find . -type f -path "*word1*" -path "*word2*" ...
In Regex müssten Sie alle verschiedenen Permutationen der Wörter angeben, wie .*word1.*word2.*|.*word2.*word1.*
(nur ERE oder Perl RE), und das explodiert schnell, wenn Sie mehr als zwei Wörter finden möchten.