Jak wykonać rekursywnie chmod
lub chown
dla ukrytych plików?
sudo chmod -R 775 *
nie działa na ukrytych plikach.
To samo dotyczy sudo chown -R user:group
.
Jeśli jesteś w porządku, chmoduj bieżący katalog, zrób to i pozwól -R
zrób ciężkie podnoszenie. -R
nie ignoruje ukrytych plików.
sudo chmod -R 775 .
* .*
) nie jest najbezpieczniejszym sposobem na to. W szczególności będzie rekurencyjny do katalogu nadrzędnego, co oznaczachmod
s także rodzeństwo bieżącego katalogu. Właściwy byłby sposób* ..?* .[^.]*
lub nawet lepiej (biorąc pod uwagę, że symbole wieloznaczne mogą nie pasować do żadnych plików)$(ls -A)
.ls
jest nie do przyjęcia; próbując go przeanalizować, prosi o kłopoty. Właściwym podejściem jest użycie globulacji powłoki.sudo chmod 775 -R
pójdzie do góry, więc trzymaj się tej odpowiedzi.*
domyślnie nie zawiera ukrytych plików, ale jeśli jesteś w bashu, możesz to zrobić za pomocą:Przeczytaj więcej na ten temat w bash
builtin
podręcznik :To sprawi
*
także ukryte pliki.Wyłącz go za pomocą:
źródło
zsh
?(D)
kwalifikator globowania, np.chmod -R 775 *(D)
Inną opcją jest użycie
find
podoba mi się, ponieważ możesz mieć nad nią bardzo drobną kontrolę.Jedynym minusem jest to
find
ma inną składnię w różnych wersjach.źródło
Wszystkie pliki w bieżącym katalogu, rekurencyjnie, w tym ukryte pliki:
Wszystkie pliki w bieżącym katalogu, nie rekurencyjnie, w tym ukryte pliki:
Nie zmieni to nazwy pliku wyjątku, począwszy od 2 kropek, na przykład,
"./..thisonescapesunharmed.txt"
Uważaj też, aby nie usunąć bitu „x”, bo inaczej wszystkie twoje katalogi nie będą dostępne (potrzebny jest bit x, aby przejść do katalogu).
Zapamiętaj ten alert: nigdy nie używaj goły
*
ale./*
zamiast.Aby uniknąć problemów z ustawieniem uprawnień do katalogów, użyj
find
zamiast.źródło