web-dev-qa-db-ja.com

特定のフォルダー内のすべてのフォルダーを除外して、すべてのフォルダーを再帰的にchmodする方法は?

1つのフォルダー(およびそれに含まれるすべてのサブフォルダー)を除外したい場合を除いて、特定のフォルダー内のすべてのフォルダーとサブフォルダーをchmodしたいと思います。

私がこれまでに持っているのは、StackOverflowからの次のソリューションのハックです:

これが私がこれまでに思いついたものです:

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

問題は-printの有無にあります。次のエラーが表示されます:

検索: `-exec 'への引数がありません

次の行は、-exec chmod 644{}\;から読み取る必要がある期待される結果を示しています。

find . -type d \( -path ./node_modules \) -Prune -o -print

データを-execにパイプするために、その行に何が欠けていますか?

1
Kraang Prime

-printを削除し、( and )をエスケープして、{}の後にスペースを追加します

find . -type d \( -path ./node_modules \) -Prune -o -exec chmod 644 {} \;
3
Alex

少し遊んだ後、私は次のことが私のために働いていることに気づきました:

フォルダを除くすべてのファイルを再帰的にchmodします

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

フォルダを除くすべてのフォルダを再帰的にchmodします

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