Wie können alle Ordner rekursiv geändert werden, wobei alle Ordner mit einem bestimmten Ordner ausgeschlossen werden?

2321
Kraang Prime

Ich möchte alle Ordner und Unterordner innerhalb eines bestimmten Ordners chmod ändern, außer dass ich einen Ordner (und alle darin enthaltenen Unterordner) ausschließen möchte.

Was ich bisher habe, ist ein Hacker der folgenden Lösungen von StackOverflow:

Hier ist, was ich bisher hatte:

finden . -type d (-path ./node_modules) -prune -o -print -exec chmod 644 {} \;

Das Problem ist mit oder ohne -printIch erhalte folgende Fehlermeldung:

find: fehlendes Argument für "-exec"

Die folgende Zeile enthält die erwarteten Ergebnisse, aus denen ich -exec chmod 644{}\;lesen muss:

finden . -type d (-path ./node_modules) -prune -o -print

Was fehlt mir in dieser Zeile, um die Daten weiterzuleiten -exec?

1

2 Antworten auf die Frage

1
Alex

Entfernen -print, entkommen ( and )und Platz hinzufügen{}

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \; 
Ihre Lösung hat funktioniert. Vielen Dank. Ich war gerade dabei, meine Lösung zu schreiben, als Sie dies veröffentlicht haben. Als Lösung akzeptieren und positiv bewerten. Kraang Prime vor 7 Jahren 0
0
Kraang Prime

Nach einigem Spielen habe ich festgestellt, dass Folgendes für mich funktioniert hat:

chmod alle Dateien rekursiv ohne Ordner

find . -not -path "*/node_modules*" -type f -exec chmod 644 {} \; 

chmod alle Ordner ohne Ordner rekursiv

find . -not -path "*/node_modules*" -type d -exec chmod 755 {} \;