Wie führe ich rekursiv chmod
oder chown
für versteckte Dateien aus?
sudo chmod -R 775 *
funktioniert nicht bei versteckten Dateien.
Das gleiche gilt für sudo chown -R user:group
.
Wie führe ich rekursiv chmod
oder chown
für versteckte Dateien aus?
sudo chmod -R 775 *
funktioniert nicht bei versteckten Dateien.
Das gleiche gilt für sudo chown -R user:group
.
Antworten:
Wenn Sie in Ordnung sind, auch das aktuelle Verzeichnis zu ändern, tun Sie das und lassen -R
Sie das schwere Heben. -R
ignoriert keine versteckten Dateien.
sudo chmod -R 775 .
ls
ist nicht analysierbar. Der Versuch, es zu analysieren, bittet um Ärger. Der richtige Ansatz ist die Verwendung von Shell-Globbing.
sudo chmod 775 -R
würde dem Bauch nach oben, so Stick auf diese Antwort .
*
schließt standardmäßig keine versteckten Dateien ein, aber wenn Sie sich in der Bash-Phase befinden, können Sie dies tun mit:
shopt -s dotglob
Lesen Sie mehr darüber in bashs builtin
Handbuch :
Wenn diese Option aktiviert ist, enthält Bash Dateinamen, die mit einem `. 'Beginnen. in den Ergebnissen der Dateinamenerweiterung.
Dadurch werden *
auch versteckte Dateien eingebunden.
chmod -R 775 *
Deaktiviere es mit:
shopt -u dotglob
zsh
?
(D)
Globbing-Qualifikationsmerkmal, z. B.chmod -R 775 *(D)
Eine andere Möglichkeit ist, find
i like it zu verwenden, da Sie sehr feinkörnige Kontrolle darüber haben können.
find <path to start from> -exec chown <options> {} \+
find -path '<path to include>' -exec chown <options> {} \+
Der einzige Nachteil ist, dass find
die Syntax in verschiedenen Versionen unterschiedlich ist.
Alle Dateien im aktuellen Verzeichnis, einschließlich versteckter Dateien:
chmod 755 -R ./* ./.[!.]*
Alle Dateien im aktuellen Verzeichnis, nicht rekursiv, einschließlich versteckter Dateien:
chmod 755 ./* ./.[!.]*
Hierdurch wird ein Ausnahmedateiname, der mit 2 Punkten beginnt, nicht geändert. Beispiel: "./..thisonescapesunharmed.txt"
Achten Sie auch darauf, das "x" -Bit nicht zu entfernen, da sonst nicht auf alle Verzeichnisse zugegriffen werden kann (man benötigt das x-Bit, um eine CD in ein Verzeichnis zu schreiben).
Denken Sie an diese Warnung: Verwenden Sie niemals nackte, *
sondern ./*
stattdessen.
Verwenden Sie find
stattdessen, um Probleme beim Festlegen von Berechtigungen für Verzeichnisse zu vermeiden .
find . -type f -exec chmod `VALUE` {} \;
* .*
) ist nicht der sicherste Weg, dies zu tun. Insbesondere würde es in das übergeordnete Verzeichnis zurückkehren, was bedeutet, dass eschmod
auch Geschwister des aktuellen Verzeichnisses sind. Der richtige Weg wäre* ..?* .[^.]*
oder, noch besser (wenn man bedenkt, dass die Platzhalter möglicherweise nicht mit Dateien übereinstimmen)$(ls -A)
.