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

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]'
0

Zacznij od

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

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

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?

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1