GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Pfade ausschließen, die Find dazu bringen, sich über Berechtigungen zu beschweren?

Ich muss eine Dateiliste von einem Datenträger generieren. Einige der Verzeichnisse (alle versteckten Verzeichnisse unter dem Root-Verzeichnis) haben seltsame Berechtigungen, was dazu führt, dass sich find beschwert.

Ich versuche alle diese Pfade auszuschließen, aber ein Verzeichnis beschwert sich immer noch:

find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied

Die Rechte sind wie folgt (vom Betriebssystem so festgelegt, also gehe ich davon aus, dass sie nicht verändert werden sollten).

d--x--x--x root  wheel   .DocumentRevisions-V100

Wie ändere ich den find Anweisung, alle versteckten Verzeichnisse effektiv wegzulassen, um sich nicht zu beschweren. (Ich möchte 2>/dev/null nicht ausführen wie ich über andere Probleme wissen möchte).

Akzeptierte Antwort:

Mit GNU find oder jedem anderen find, das -readable unterstützt und -executable Prädikate:

find . -type d ! ( -readable -executable ) -prune -o -type f -not -path './.*/*' -print

Zuerst beschneiden wir Verzeichnisse, die nicht passierbar sind. Wenn diese Bedingung nicht zutrifft, versuchen Sie es mit der/den anderen Bedingung(en).

Wenn Ihr find diese Optionen nicht hat, können Sie die Dateiberechtigungen abgleichen.

find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print

Linux
  1. Dateien finden, die ein Benutzer nicht lesen kann?

  2. Verzeichnis in Suchen ausschließen?

  3. Ausschlussverzeichnis finden?

  4. Wie schließe ich absolute Pfade für tar aus?

  5. So schließen Sie ein Verzeichnis in find aus. Befehl

So finden Sie Dateien anhand ihrer Berechtigungen in Linux

Linux-Berechtigungen – So finden Sie Berechtigungen einer Datei

Dateiliste von der Suche ausschließen

Suchen eines Verzeichnisses in einem Linux-Terminal

Entspricht dem Unix-Suchbefehl unter Windows

Anzahl der Dateien in jedem Unterverzeichnis