web-dev-qa-db-ja.com

再帰的なchmod:ファイルにはrw、ディレクトリにはrwx

たくさんのファイルとディレクトリをchmodしたいです。 xはディレクトリのリストを示し、通常のファイルに対して実行するので、ファイルにはrwを適用し、ディレクトリにはrwxを適用します。 chmodコマンドのみを使用することは可能ですか?

そうでない場合、最も便利な方法は何ですか?

chmod -R 770通常のファイルを実行可能にしたくないので、可能性はありません。

31
Deleted

私は時々、単一のfindコマンドを使用してこれを行います。醜いが効果的。

find /p/a/t/h \( -type d -exec chmod 755 {} \; \) -o \( -type f -exec chmod 644 {} \; \)
19
baumgart

ManページからXパーミッションを使用します:

ファイルがディレクトリの場合、または実行/検索ビットが元の(変更されていない)モードに設定されている場合は、実行/検索ビット。パーマシンボル "X"を使用した操作は、オペシンボル "+"と組み合わせた場合にのみ意味があり、それ以外の場合はすべて無視されます。

したがって、次のようにします。

chmod -R a-x [directory]
chmod -R a+rwX [directory]

これにより、すべてのファイルとディレクトリから実行ビットが削除され、その後すべてに読み取りおよび書き込み特権が追加され、ディレクトリのみに実行特権が追加されます。 (通常のファイルでは、最初のステップから実行ビットがオンになっています。)

40
Ben S

findxargsとともに使用することもできます。

find . -type f -print0 | xargs -0 chmod 666
find . -type d -print0 | xargs -0 chmod 777

どこ -typed irectoryまたはf ileを指定します。

14
John T