2012-04-05 30 views
2

Ich habe ein Shell-Skript, das alle. Js und HTML-Dateien ausgibt, die in einem vom Benutzer bereitgestellten Ordner gefunden werden. Ich muss einen Unterordner und alle seine Dateien von den Suchergebnissen ausschließen. Ich verwende den Befehl find, um dies zu tun. Der Befehl, den ich momentan ausschließe, schließt alle Dateien unter diesem Unterordner aus, aber gibt den Unterordner in den Ergebnissen aus. Ich möchte einen Ordner namens "CrashLog" und alle seine Dateien ausschließen. Der Weg zu diesem Unterordner ist "Benutzer/Test/Desktop/Units/JSUnit/Crashlog /"Befehl finden, Ordner nicht aus Ergebnissen ausschließen

Hier ist der Befehl find ich verwende:

find "Users/test/Desktop/Units" -name CrashLog -prune -o -name "*.html" -o -name "*.js" 

Die Ausgabe enthält „Benutzer/Test/Desktop/Einheiten/JSunit/CrashLog/". Wie kann ich das ausschließen? Ich weiß, dass ich Grep verwenden kann, würde aber bevorzugen, wenn es eine Lösung gibt, die sich selbst findet. Ich laufe auf Mac OSX.

Antwort

2

Sie benötigen -print, am Ende und Klammern um die Tests Dateierweiterung:

find "Users/test/Desktop/Units" -name CrashLog -prune -o \(-name "*.html" -o -name "*.js" \) -print 
1
find "Users/test/Desktop/Units" -name CrashLog -prune -a \(-name "*.html" -o -name "*.js" \) 
+0

@ DigitalRoss: Dies keine Ausgabe auf meinem Mac nicht geben. – smokinguns

+0

In einigen Fällen wird "-print" impliziert. Ich tendiere dazu, es immer zu liefern ... Ich denke, ich war schließlich nicht komplett retro darüber ... – DigitalRoss

+0

mit "-a" gibt keine Ausgabe. Die Verwendung von -o gibt eine Ausgabe – smokinguns

Verwandte Themen