'find' - Befehl; Geschützte Ordner nicht berücksichtigen

L

little_pixel

Aktives Mitglied
Thread Starter
Dabei seit
06.06.2006
Beiträge
4.706
Reaktionspunkte
1.658
Hallo zusammen,

ich habe eine Frage bezüglich 'find'. Die Verwendung ist insofern kein Problem und mir ebenfalls gut vertraut. Leider habe ich dennoch ein Problem.

Ich möchte mir gerne alle Daten eines bestimmten Dateityps anzeigen lassen. Ab und an werden zwischen den Ergebnisse Einträge gezeigt:

Code:
find: /Volumes/Daten//.Trashes: Permission denied

Das ist auf der Konsole kein Problem und okay. Ich möchte den Befehl aber extern in ein Skript einbinden. Die "Zugriffsverweigerung" hat dort immense Auswirkungen.

Ist es möglich geschützte Verzeichnisse direkt aussen vor zu lassen, so dass diese bei der Suche nicht berücksichtig werden?

Vielen Dank!

Viele Grüße
 
in den spotlight Voreinstellungen (System Preferences) kannst du unter Privacy bestimmte Verzeichnisse von der Indexierung ausnehmen.
 
Hänge einfach an Deinen find-Befehl die Umleitung der Fehlermeldung ins Nulldevice dran und schon schnackelt Dein Skript

find . * 2>/dev/null

Bye
Mirko
 
'man find' schon gelesen?
Tip:
In die expression Eigentümerverhältnisse und Permissions einbauen.
Alles andere ist Pfusch! :D
 
Hallo,

vielen Dank für die schnelle Unterstützung.

Lunde:
Leider kann ich so nicht vorgehen, da der Einsatzbereich das nicht ermöglicht.

Paelmchen:
Das funktioniert einwandfrei, aber leider nur auf der Konsole. Im Skript wird das Argument als Fehler ausgewiesen. Das dubiose ist, dass keine Fehlermeldung bereitsteht.

Maceis:
Ich habe die man soweit schon durch. Ich vermute, dass der Parameter 'perm' m ich zum Erfolg bringen wird.

Letztlich versuche ich einfach alle Dateien eines Types zu finden, die der Benutzer mindestens Lesen & Ausführen darf.
Ich spiele schon mit -perm herum, werde aber im Moment nicht ganz fündig.

Viele Grüße
 
Mit -perm komme ich an dieser Stelle nicht weiter.

Maceis hättest Du mir bitte ein Beispiel, wie ich die "geschützen" Ordner von der Suche ausschließe?

Vielen Dank.
 
Mmmh,

das muss aber gehen. Hier mal ein Beispiel:

find /Users -name "*" -mtime +30 -exec ls -l "{}" \; 2>/dev/null

Sucht alle Dateien im Pfad Users die älter als 30 Tage sind und führt darauf das kommande "ls -l" aus.
 
Nochmals Danke!

Jetzt ist es raus!!!

Code:
do shell script "find '/Volumes/Meine Daten' -name *.txt 2>/dev/null"

Funktioniert einwandfrei im Terminal ist aber nicht als Skript ausführbar.

Code:
do shell script "find '/Volumes/Meine Daten' -name *.txt; 2>/dev/null"

Lediglich das Semicolon ist der Grund.

Viele Grüße
 
Zurück
Oben Unten