Syntax für find unter Mac OS X

4767
hekevintran

Ich habe ein Projektverzeichnis, das Quellcode und Unterverzeichnisse des Quellcodes enthält. Ich möchte mit dem Unix-Programm findrekursiv nach Dateinamen bestimmter Erweiterungen suchen. Die Versionen von findLinux und Mac OS X verhalten sich unterschiedlich.

# Works in Linux find . -type f -regex ".*\.\(py\|html\)$"  # Neither of these works in Mac OS X find . -type f -regex ".*\.\(py\|html\)$" find . -type f -regex ".*\.(py|html)$" 

Wie schreibe ich diesen Befehl, damit er unter Mac OS X (und hoffentlich auch unter Linux) ausgeführt werden kann?

6
Es wäre hilfreich, wenn Sie uns sagen würden, wie sie sich anders verhalten. Nifle vor 14 Jahren 0
Der Befehl soll Dateien finden. Unter OS X findet derselbe Befehl nichts (Nulldateien). hekevintran vor 14 Jahren 0

2 Antworten auf die Frage

9
Zoredache

Mac OS X verwendet BSD- Suche und die meisten Linux-Distributionen werden mit GNU- Suche geliefert . Ich glaube, Sie können GNU findutils auf Mac OS X installieren. Ich habe keinen Mac zur Hand, aber ich bin mir sicher, dass er in MacPorts verfügbar war .

Wenn Sie sich die BSD-Suchmanager-Seite ansehen, könnte ich eine wilde Vermutung treffen und vorschlagen, dass Sie die -EOption zur Aktivierung der modernen Bibliothek für reguläre Ausdrücke versuchen .

Findutils von MacPorts zu bekommen, war der Trick. hekevintran vor 14 Jahren 1
Findutils ist auch über Homebrew erhältlich. Nach der Installation lautet der Befehl "gfind" Eric Hu vor 11 Jahren 0
4
Debilski

Die folgenden Arbeiten mit BSD finden Sie unter OS X.

find -E . -type f -regex ".*\.(py|html)$"  find . -type f | grep -e ".*\.\(py\|html\)$"