Próbuję grep dla linii w pierwszym polu wyjścia, które są większe niż podana liczba. W tym przypadku ta liczba to 755
. Ostatecznie to, co robię, polega na próbie wypisania każdego pliku z uprawnieniami większymi niż (i nie równymi) 755
za pomocą stat -c '%a %n' *
, a następnie podłączenie do jakiegoś grep'ing (lub prawdopodobnie sed'ing?) W celu uzyskania tej ostatecznej listy. Jakieś pomysły, jak najlepiej to osiągnąć?Wiersze grep dla liczb większych niż podany numer
Odpowiedz
spróbuj tego:
stat -c '%a %n' *|awk '$1>755'
jeśli chcesz tylko nazwę pliku w swoim ostatecznym wyjściem, pomiń numery przywilejem, możesz:
stat -c '%a %n' *|awk '$1>755{print $2}'
EDIT
rzeczywiście mogłeś wykonaj chmod
w awk. ale powinieneś upewnić się, że użytkownik wykona linię awk ma uprawnienia do zmiany tych plików.
stat -c '%a %n' *|awk '$1>755{system("chmod 755 "$2)}'
ponownie, załóżmy, że nazwa pliku nie zawiera spacji.
Och dzięki za ten mały dodatek. Chciałem tylko wyciąć pole 2, ale twoje osiąga to w mniejszej ilości fajki! – user2150250
Uważaj na nazwy plików ze spacjami. –
@ user2150250 uwaga, moja druga strona typu awk przyjmuje, że nazwa pliku nie zawiera spacji. – Kent
użyję awk(1)
:
stat -c '%a %n' * | awk '$1 > 755'
awk
wzorzec pasuje linie gdzie pierwsze pole jest większa niż 755. Można by dodać akcję, jeśli chcesz drukować podzbiór linii lub czegoś innego, też (patrz odpowiedź @ Kenta).
Ani grep
ani sed
nie są dobre w arytmetyki. awk
może pomóc (niestety nie wiem). Należy jednak pamiętać, że może tu być find
poręczne, zbyt:
-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).
Więc co może pracować dla Ciebie jest:
find . -perm -755 -printf '%m %p\n'
Wystarczy wyjąć -printf
część, jeśli potrzebujesz tylko nazwy plików.
- 1. Algorytm znajdowania kombinacji liczb całkowitych większych niż określona wartość
- 2. Wiersze POI Apache numer
- 3. CAKeyFrameAnimation nie Liniowy dla wartości większych niż PI
- 4. Równoległe przetwarzanie danych większych niż rozmiar pamięci
- 5. Jak napisać warunek przepisywania dla request_filename inny niż podany
- 6. Co zrobić, gdy potrzebujesz liczb całkowitych większych niż 20 cyfr na mysql?
- 7. Grep nazwa pliku i numer linii
- 8. jak wyodrębnić podciąg i liczb tylko przy użyciu grep/sed
- 9. sprawdzić, czy ciąg zawiera numer większy niż
- 10. Przesyłanie plików większych niż 2 GB w ASP.NET MVC 3
- 11. Jak sprawdzić brakujący numer z serii liczb?
- 12. Dlaczego biblioteki Java używają wartości stałych większych niż wyliczenia?
- 13. Użycie EclipseLink JPA do wiązania Ciągów większych niż 255 znaków
- 14. Używanie znaków Unicode większych niż 2 bajty z .Net
- 15. Dlaczego "i: = i + 1" nie daje błędu sprawdzania zakresu dla liczb całkowitych i większych typów?
- 16. Jak zliczyć wystąpienia elementów większych niż podana liczba na liście?
- 17. Ładowanie danych większych niż rozmiar pamięci w h2o
- 18. Nie można przesłać plików większych niż 50kb z AJAX
- 19. boost :: asio :: async_write, zapisywanie danych większych niż 65536 bajtów
- 20. Euklidesowy największy wspólny dzielnik dla więcej niż dwóch liczb
- 21. Struktura projektu ASP.NET MVC dla większych witryn
- 22. Jak znaleźć wszystkie zapytania w warunkach cakephp o wartościach większych niż i mniejszych niż wartości
- 23. Usuń pliki starsze niż podany czas z katalogu
- 24. Czy Graphics.DrawImage jest zbyt wolny dla większych obrazów?
- 25. MySQL - Dodaj 0 do liczb mniej niż 9 cyfr
- 26. Jak grep dla całego słowa
- 27. Buforowanie większych plików flv 5mb +
- 28. Walidacja liczb całkowitych dla danych wejściowych
- 29. grep bez ciągu znaków
- 30. Określ numer wiersza i kolumny dla UICollectionView
Ponieważ '755' jest tak naprawdę liczbą ósemkową reprezentującą ciąg bitów, co dokładnie oznacza słowo" większy niż "? '666' daje każdemu dostęp do zapisu; czy to "większy niż" '755'? Czy '755'" jest większe niż "' 666'? –
Użytkownicy OS X: odpowiednikiem 'stat -c '% a% n' *' (Linux) wydaje się być 'stat -f '% Lp% N' *' – mklement0
osoba prosi o grep, podczas gdy ludzie wciąż dają awk? – Soncire