Listen Sie nicht beschreibbare Dateien unter Linux auf

7

Wie kann ich eine Liste nicht beschreibbarer Dateien in meinem aktuellen Verzeichnis abrufen?

Webnet
quelle

Antworten:

14

Interpretiere das als: Benutzer / Gruppe / Andere kann nicht schreiben

find . -maxdepth 1 -not -perm /ugo+w

MikeyB
quelle
2
+1 für-maxdepth 1
Aaron Copley
3

Dadurch findwerden Dateien gefunden, die von niemandem geschrieben werden können:

find . ! -perm /222

EDIT: Aus hmonts Vorschlag zum Kommentar:

find . ! -perm /222 -exec ls -l {} +

Und während Mikey seine Antwort gibt, können Sie -maxdepth 1den Fund auf ein einziges Verzeichnis beschränken.

Core-Dump
quelle
Har! Du hast mich um 2 Sekunden geschlagen, aber das 'im aktuellen Verzeichnis' vergessen (zusammen mit allen anderen). : p
MikeyB
2
+1 weil es das klarste ist. Ich würde ein hinzufügen -exec ls -l {} \;, um vollständige Informationen über Berechtigungen und Eigentümer- / Gruppenmaterial bereitzustellen.
Hmontoliu
@ Mikey, das auf viele Arten interpretiert werden kann :) Aber deine Syntax ist insgesamt besser lesbar als meine.
Coredump
@hmontoliu, nur um das cmd weiter zu verfeinern: anstelle von "-exec", und da dies Linux ist (im Vergleich zu solaris et al.), können Sie einfach die schnellere Option "-ls" verwenden, um zu finden (das Format ist unterschiedlich, der Inhalt ist meistens das gleiche):find . -maxdepth 1 ! -perm /222 -ls
michael
@ Michael_n: gut zu wissen
Hmontoliu
1

find . ! -perm /a+w
find . ! -perm -ug+w

oder eine andere Permutation mit symbolischer Notation, um Ihre Anforderungen zu erfüllen.

Zur Verdeutlichung stimmt das '/' mit jedem Benutzer, jeder Gruppe oder anderen überein. Um allen zu entsprechen, stellen Sie dem Modus '-' voran.

Aaron Copley
quelle
0
perl -le 'print for grep { ! -w } <*>'

quelle