Hier ist ein Skript, das Sie aufrufen können, indem Sie den Modus als erstes Argument und einen oder mehrere Verzeichnisnamen als nachfolgende Argumente übergeben. Wenn Sie unter Linux keinen Verzeichnisnamen übergeben, ist dies so, als hätten Sie .
(das aktuelle Verzeichnis) übergeben. Benennen Sie dieses Skript rchmodf
, machen Sie es ausführbar ( chmod a+rx /path/to/rchmodf
) und platzieren Sie es irgendwo auf Ihrem $PATH
.
#!/bin/sh
mode=$1; shift
find "$@" -type f -exec chmod "$mode" {} +
Erläuterungen: mode=$1; shift
Setzt die Variable mode
auf das erste Argument des Skripts und entfernt dieses erste Argument aus der Liste. "$@"
Erweitert die Liste aller Argumente.
Wenn Sie möchten, können Sie ein Skript erstellen, das sowohl einen Verzeichnismodus als auch einen Dateimodus akzeptiert.
#!/bin/sh
dir_mode=$1; shift
file_mode=$1; shift
find "$@" -type d -exec chmod "$dir_mode" {} + -o -type f -exec chmod "$file_mode" {} +
Beachten Sie, dass 744 kein nützlicher Dateimodus ist. 644 (vom Benutzer beschreibbar und weltweit lesbar) und 755 (auch von der Welt ausführbar) sind weitaus häufiger. Außerdem ist es selten sinnvoll, jede Datei in einem Baum so zu ändern, dass sie ausführbar oder nicht ausführbar ist. Sie möchten dieses Skript wahrscheinlich mit Argumenten wie +rX
(Großbuchstaben X
, um das ausführbare Bit nur für Verzeichnisse und für Dateien zu setzen, die bereits ausführbar sind) aufrufen . In der Tat ist der X
symbolische Modus wahrscheinlich das, wonach Sie mit diesen Skripten gesucht haben : chmod -R +rX .
.
Mit bash oder zsh gibt es eine andere Möglichkeit, rekursiv zu handeln, jedoch nur für Verzeichnisse. Für Bash benötigen Sie Version 4 und müssen shopt -s globstar
zuerst ausgeführt werden.
chmod a+rx **/*/
In zsh können Sie auf Dateien nur mit dem Suffix (.)
: chmod a+r **/*(.)
.
Ich werde die Nautilus-Frage weitergeben.
Gilles 'SO - hör auf böse zu sein'
quelle
Skript von user23538 verlinkt, hoffe es macht Ihnen nichts aus.
Ich habe es versucht und es funktioniert gut. Bitte beachten Sie, dass, wenn Sie verwenden. Als Pfadargument (führen Sie es in demselben Verzeichnis aus, in dem sich das Skript befindet) ändert es tatsächlich die Dateiberechtigungen des Skripts in 644, also legen Sie es in das obige Verzeichnis.
quelle
Ich habe ein Skript geschrieben, das im Grunde das oben Genannte tut, aber auch ein wenig Flexibilität für Befehlszeilenoptionen bietet (Verzeichnis- und / oder Dateiberechtigungen oder beide ausschließen, es setzt automatisch alles auf 755-644 zurück). Es wird auch nach einigen Fehlerszenarien gesucht.
http://bigfloppydonkeydisk.blogspot.com.au/2012/09/recursively-chmod-only-files-or.html
quelle