Ich versuche, für Linien im ersten Feld einer Ausgabe grep, die größer als eine gegebene Zahl sind. In diesem Fall ist diese Nummer 755
. Letztendlich versuche ich, jede Datei mit Privilegien größer als (und nicht gleich) 755
aufzulisten, indem ich stat -c '%a %n' *
benutze und dann zu etwas grep'ing (oder möglicherweise sed'ing?) Pipe, um diese abschließende Liste zu erhalten. Irgendwelche Ideen, wie dies am besten erreicht werden könnte?Grep Zeilen für Zahlen größer als die angegebene Nummer
Antwort
versuchen Sie dies:
stat -c '%a %n' *|awk '$1>755'
, wenn Sie nur den Dateinamen in die endgültige Ausgabe möchten, die Berechtigungsnummern überspringen, könnten Sie:
stat -c '%a %n' *|awk '$1>755{print $2}'
EDIT
tatsächlich konnte man Mach das chmod
innerhalb awk. aber Sie sollten sicherstellen, dass der Benutzer die awk-Zeile ausführen, die Berechtigung zum Ändern dieser Dateien hat.
stat -c '%a %n' *|awk '$1>755{system("chmod 755 "$2)}'
wieder angenommen, der Dateiname hat keine Leerzeichen.
Oh danke für dieses kleine Add-on. Ich wollte nur Feld 2 ausschneiden, aber das wird in einem Rohr erledigt! – user2150250
Achten Sie auf Dateinamen mit Leerzeichen. –
@ user2150250 Hinweis, mein 2. awk-Einstrich geht davon aus, dass Ihr Dateiname keinen Platz hat. – Kent
würde ich awk(1)
:
stat -c '%a %n' * | awk '$1 > 755'
Die awk
Musterlinien übereinstimmt, wo das erste Feld größer als 755. ist Sie eine Aktion hinzufügen könnte, wenn Sie unterschiedliche eine Teilmenge von einer Linie oder etwas ausdrucken möchten, zu (Siehe @ Kent's Antwort).
Weder grep
noch sed
sind gut in Arithmetik. awk
könnte helfen (leider weiß ich es nicht). Aber beachten Sie, dass find
hier kann sehr nützlich sein, auch:
-perm mode
File's permission bits are exactly mode (octal or symbolic).
Since an exact match is required, if you want to use this form
for symbolic modes, you may have to specify a rather complex
mode string. For example -perm g=w will only match files which
have mode 0020 (that is, ones for which group write permission
is the only permission set). It is more likely that you will
want to use the `/' or `-' forms, for example -perm -g=w, which
matches any file with group write permission. See the EXAMPLES
section for some illustrative examples.
-perm -mode
All of the permission bits mode are set for the file. Symbolic
modes are accepted in this form, and this is usually the way in
which would want to use them. You must specify `u', `g' or `o'
if you use a symbolic mode. See the EXAMPLES section for some
illustrative examples.
-perm /mode
Any of the permission bits mode are set for the file. Symbolic
modes are accepted in this form. You must specify `u', `g' or
`o' if you use a symbolic mode. See the EXAMPLES section for
some illustrative examples. If no permission bits in mode are
set, this test matches any file (the idea here is to be consis‐
tent with the behaviour of -perm -000).
Also, was für Sie funktionieren könnte ist:
find . -perm -755 -printf '%m %p\n'
einfach den -printf
Teil entfernen, wenn Sie nur Dateinamen benötigen.
- 1. Wie grep für ein Größer als Symbol?
- 2. Csvwrite mit Zahlen größer als 7 Ziffern
- 3. In Oracle, finden Sie Nummer, die größer als 80% einer Reihe von Zahlen ist
- 4. Regex für die Nummer zwischen den Zahlen
- 5. javascript wenn die Zahl größer ist als Nummer
- 6. Überprüfen, ob ein Datum größer als das angegebene Datum ist
- 7. Überprüfung der Nummer ist die Macht von 2 für Zahlen größer als 2^64, Implementierung der manuellen Division
- 8. Suchen und ersetzen Sie die Zeilen eines Arrays mit wiederholter Nummer durch eine feste angegebene Zeile
- 9. Wie kann ich in Firefox/IE7 mit Zahlen umgehen, die größer als 17 Ziffern sind?
- 10. Wie grep Linie mit einer Nummer?
- 11. grep formatierte Nummer mit r
- 12. TSQL: Alle Zeilen für die angegebene ID abrufen
- 13. Rmarkdown HTML-Nummer Zahlen
- 14. Wie man die Nummer im ersten Etikett größer als das zweite Etikett macht
- 15. Arbeiten mit Zahlen größer als den maximalen Dezimalwert
- 16. Reguläre Ausdrücke: Matching wenn Nummer größer ist als ...?
- 17. Umgang mit Zahlen größer als Long in VBA
- 18. Wählen Sie alle Elemente mit der Nummer größer als 50
- 19. finden Zeilen, die mit grep nicht
- 20. Vergleichen Sie 2 Dateien in Unix-Datei1 (2M Zahlen/Zeilen/Zeilen), Datei2 (2000,480 Zahlen/Zeilen/Zeilen)
- 21. Loading ganze Zahlen größer als 32-Bit in MIPS-Assembly
- 22. Speichern der Nummer größer als INT_MAX in einem int
- 23. Grep ignoriert mehrere Zeilen
- 24. Mindest Subarray, die größer als ein Schlüssel
- 25. Wie gehen Sie mit Zahlen größer als UInt64 (C#)
- 26. Nur Zahlen in Textfeld nicht größer als Kontostand
- 27. Warum „größer als“ Vergleich von Zahlen unerwartetes Ergebnis geben
- 28. wie String und Zahlen extrahieren nur mit grep/sed
- 29. Regex für kommagetrennte Nummer
- 30. MySQL-Datum größer als gibt alle Zeilen zurück
Da '755' eigentlich eine Oktalzahl ist, die eine Bitfolge darstellt, was genau bedeutet" größer als "? '666' gibt jedem Schreibzugriff; ist das "größer als" "755"? Ist "755" größer als "666"? –
OS X Benutzer: Das Äquivalent von 'stat -c '% a% n' *' (Linux) scheint 'stat -f '% Lp% N' * ' – mklement0
die Person fragt nach Grep, während die Leute noch geben awk? – Soncire