Składnia - operacja na wszystkich plikach OPRÓCZ


(Baftek) #1

Witam.

Uczę się operować w konsoli linuksowej i napotkałem problem - zagadkę. Narazie nikt nie potrafił mi pomóc, dlatego pytam szerszego grona profesjonalistów.

Załóżmy sobie, że mamy folder /home/user/ w którym znajduje się 100 różnych folderów z zawartością. Jak powinno wyglądać polecenie np. chmod, które (załóżmy) będzie dotyczyć wszystkich folderów i ich zawartości ZA WYJĄTKIEM folderów o nazwach aaa, bbb, ccc? Chcemy uniknąć wpisywania wszystkich nazw, ani też nie przywracać poprzednich atrybutów wykluczonych plików po wykonaniu polecenia na wszystkim, wykluczonych plików też może być dużo.

chmod -R 777 /home/user/* [i co dalej?]

Dzięki,

Bartek


(Pablo_Wawa) #2

W samym chmod się nie da, myślę, że musisz napisać stosowną komendę, która zwróci Ci listę folderów (i plików), którą potem przefiltrujesz i dopiero przekażesz do wykonania dla chmod.


(Baftek) #3

ok, czyli piszę ls > pliki.txt, z zawartości pliku usuwam te których nie chcę użyć i jak użyć zawartości pliku jako części komendy, no powiedzmy chmod’a?


(Sawyer47) #4

Nie ma sensu używać pliku tymczasowego, od tego jest pipe (|), coś w stylu (argumenty do dobrania):

ls | grep | xargs chmod

(Pablo_Wawa) #5

Załóżmy, że nie chcemy modyfikować plików (katalogów) o nazwach “aaa”, “bbb” oraz “ccc”. Wtedy składnia polecenia byłaby taka:

find /home/user/ -name '*' | grep -v 'aaa|bbb|ccc' | xargs chmod 777

Ale to tak na sucho, nie testowałem tego czy to zadziała poprawnie.