Masowa zmiana uprawnień dla plików i katalogów

Cała sprawa wyszła przy okazji organizowania mojej muzyki. Wprawdzie znalazłem program (Amarok, a dokładniej Amarok + Amarok Web Fronted), który w 100% mnie satysfakcjonuje, problemem okazały się uprawnienia do plików.

W moim katalogu z muzyką jest masa plików. Okazuje się, że nie wszystkie miały jednakowe uprawnienia i nie zawsze mogłem zapisywać w nich poprawione tagi ID3v1.

Nie chciało mi się za każdym razem edytować od nowa kolejnych chmodów dla każdego mp3, dlatego odpaliłem program chmod z parametrem -R, ale szybko żałowałem tej decyzji. Wprawdzie pliki miały dobry chmod (taki jaki chciałem, czyli 644) to nie miałem dostępu do katalogów.
Zależało mi na tym, aby każdy katalog, w folderze z muzyką, otrzymał chmoda 755, a każdy plik 644. Przyszła decyzja o napisaniu skryptu, który by rozwiązał mój problem.

#!/bin/bash
#
        
find $PWD/* | while read x
do
        if [ -d "$x" ]
        then
                echo "$x - katalog - nowy chmod to 755"
                chmod 755 "$x"
        else
                echo "$x - plik - nowy chmod to 644"
                chmod 644 "$x"
        fi
done

Tak wygląda kod. Nic skomplikowanego. Strasznie się na początku męczyłem. Chciałem zrobić funkcję w bashu, która rekursywnie sprawdzałaby czy napotkała na plik, czy na katalog. Jeśli katalog to chmod 755 i zagłębienie się dalej, jeśli plik to chmod 644. Dopiero w komentarzach znalazłem odpowiedź na problem.

W tym miejscu bardzo chciałbym podziękować panom fooshmer i Dex za pomoc :)

7 Responses to “Masowa zmiana uprawnień dla plików i katalogów”

  1. Tomasz Guzik April 2, 2007 at 6:28 pm #

    $ find ./ -type d -print0 | xargs -0 chmod 755
    $ find ./ -type f -print0 | xargs -0 chmod 644

    ?

  2. radmen April 2, 2007 at 6:28 pm #

    Możliwe, ale ja nie znam na tyle bash’a aby móc aż tak spore polecenia wpisywać :)

  3. Tomasz Guzik April 2, 2007 at 6:28 pm #

    Prawdę powiedziawszy to ma z baszem wspólne tylko użycie potoku ;p

  4. radmen April 2, 2007 at 6:28 pm #

    Tak wiem o tym, ale po prostu nie znam na tyle dobrze tych wszystkich parametrów do programów (a czasami nawet nazw tych programów) :P

  5. Dex April 2, 2007 at 6:28 pm #

    a taaakie coś chciałeś zrobić… trzeba było tak od razu… moja metoda:

    chmod -Rc a-rwx,u+rwX,go+rX *

    ustawi 644 plikom, 755 katalogom i wydrukuje info odnośnie wszystkich zmian. ;)

  6. radmen April 2, 2007 at 6:28 pm #

    Wow… toć mnie teraz zaskoczył ;]

  7. Dex April 2, 2007 at 6:28 pm #

    magia, panie, czysta magia! :) teraz nawet już nie pamiętam w czym to „duże X” znalazłem swego czasu jak miałem podobny problem z muzyką :D