Jak zmienić uprawnienia do wielu plików znalezionych za pomocą polecenia find?


11

Mam katalog z wieloma plikami. Część plików ma 755uprawnienia, a druga część ma 644uprawnienia. Chciałbym przekonwertować pliki z 755uprawnieniami do 644. Próbowałem następującego wiersza, uruchamiając go z samego katalogu:

find . -perm 755 -exec chmod 644 {}\;

Jednak w wyniku tego uprawnienia zmieniły się tylko dla samego katalogu i po jego ponownej zmianie okazało się, że uprawnienia do plików pozostały niezmienione. Czy coś mi umknęło?


Twoje polecenie usuwa bit wykonywalny z katalogu, uniemożliwiając przejście do niego i sprawdzenie plików w nim zawartych. Dlatego wydaje się, że polecenie nie działa. Spróbuj find ./ -type f -exec chmod -x {} \;zamiast tego.
Shadur

Odpowiedzi:


17

Ok, wygląda na to, że znalazłem problem. Wygląda na to, że między i muszą być obowiązkowe odstępy , więc polecenie będzie wyglądać następująco:{}\;

find . -perm 755 -exec chmod 644 {} \;

Zamiast:

find . -perm 755 -exec chmod 644 {}\;

Problem ze zmianą uprawnień do katalogu można rozwiązać, dodając -type fflagę, więc będzie wyglądać następująco:

find . -type f -perm 755 -exec chmod 644 {} \;

6
Możesz użyć +zamiast, \;aby zmniejszyć liczbę utworzonych podprocesów.
Kevin

-type dznajdzie katalogi. -type fznajdzie pliki.
Mick T
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.