Wie ändere ich die Berechtigungen mehrerer Dateien, die mit dem Befehl find gefunden wurden?

11

Ich habe ein Verzeichnis mit zahlreichen Dateien. Ein Teil der Dateien verfügt über die 755Berechtigungen und der andere Teil über 644Berechtigungen. Ich möchte die Dateien mit 755Berechtigungen in konvertieren 644. Ich habe die folgende Zeile ausprobiert, indem ich sie aus dem Verzeichnis selbst ausgeführt habe:

find . -perm 755 -exec chmod 644 {}\;

Infolgedessen änderte sich die Berechtigung jedoch nur für das Verzeichnis selbst, und nachdem ich es wieder geändert hatte, stellte ich fest, dass die Dateiberechtigungen unverändert blieben. Vermisse ich etwas

Eugene S.
quelle
Ihr Befehl entfernt das ausführbare Bit aus dem Verzeichnis, sodass es nicht möglich ist, darauf zuzugreifen und die darin enthaltenen Dateien anzuzeigen. Deshalb scheint der Befehl nicht zu funktionieren. Versuchen Sie es find ./ -type f -exec chmod -x {} \;stattdessen.
Shadur

Antworten:

15

Ok, es scheint, dass ich das Problem gefunden habe. Es scheint, dass zwischen und ein obligatorisches Leerzeichen stehen muss , daher sieht der Befehl folgendermaßen aus:{}\;

find . -perm 755 -exec chmod 644 {} \;

Eher, als:

find . -perm 755 -exec chmod 644 {}\;

Das Problem mit dem Ändern der Verzeichnisberechtigungen kann auch durch Hinzufügen eines -type fFlags behoben werden. Es sieht also folgendermaßen aus:

find . -type f -perm 755 -exec chmod 644 {} \;
Eugene S.
quelle
5
Sie können +anstelle von verwenden \;, um die Anzahl der erstellten Unterprozesse zu reduzieren.
Kevin
-type dwird Verzeichnisse finden. -type fwird Dateien finden.
Mick T