Zmiana praw dostępu wszystkim plikom/katalogom [BASH]

Zmiana praw dostępu wszystkim plikom/katalogom [BASH]
C3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Witam wszystkim,

piszę skrypt w BASHu w ramach którego określam 2-4 parametry

  1. prawa dostępu np. 744
    2,3,4) rodzaj plików do zmiany np. f d (f-plik zwykły, d-katalog, l-dowiązanie symboliczne)
    np. ./prawa_dostepu 744 f d
    powyższe powinno zmienić wszystkim plikom zwykłym i katalogom prawa dostępu (bez zmiany praw dowiązań symbolicznych)

Problem polega na połączeniu poniższych poleceń w jedno, chyba, że jest inny sposób:

  1. chmod $1 *
  2. potrafię wyszukać w katalogu pliki, katalogi, dowiązania np.
    ls -l | grep '^[-,d]'
Spearhead
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1014
0

Zacznij od

Kopiuj
find . -type f -exec chmod 744 "{}" \;

(znajdź rekurencyjnie wszystkie pliki i wywołaj na nich chmod 744).

C3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Dzięki za szybką odpowiedź, czy istnieje jeszcze jakiś inny- prostszy sposób lub mógłbyś szerzej wyjaśnić na czym polega Twoje rozwiązanie?

Spearhead
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1014
0

Polecenie find wynajduje pliku w katalogu podanym jako argument, tutaj argumentem jest . czyli bieżący katalog. Flagi pozwalają na doprecyzowanie wyszukiwania, -type f oznacza wyszukanie jedynie plików. Opcja -exec powoduje wykonanie przekazanej operacji na wyszukanych plikach, gdzie w miejsce ciągu znaków {} zostaną wstawione znalezione ścieżki, czyli jak polecenie znajdzie plik a/b/c to wywoła chmod 744 a/b/c. Znacznik \; służy do wskazania końca polecenia do wykonania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.