ファイルを除くすべてのディレクトリを再帰的にchmodする方法は?



How Recursively Chmod All Directories Except Files



解決:

再帰的に与える ディレクトリ 読み取りと実行の権限:

/ path / to / base / dir -type d -exec chmod 755 {} +を検索します

再帰的に与える ファイル 読み取り権限:



/ path / to / base / dir -type f -exec chmod 644 {} +を検索します

または、処理するオブジェクトが多数ある場合:

chmod 755 $(find / path / to / base / dir -type d)chmod 644 $(find / path / to / base / dir -type f)

または、減らすためにchmodスポーン:



/ path / to / base / dir -type d -print0 |を検索します。 xargs -0 chmod 755 find / path / to / base / dir -type f -print0 | xargs -0 chmod 644 

この種の一般的な理由は、ディレクトリを755に設定し、ファイルを644に設定することです。この場合、nikよりも少し速い方法があります。例を見つける:

chmod -R u + rwX、go + rX、go-w / path

意味:

  • -R =再帰的に;
  • u + rwX =ユーザーは読み取り、書き込み、実行ができます。
  • go + rX =グループなどは読み取りと実行が可能です。
  • go-w =グループなどは書き込めません

ここで注意すべき重要なことは、大文字ですXは小文字とは異なる動作をしますNS。マニュアルでは、次のように読むことができます。



ファイルがディレクトリである場合、または実行/検索ビットのいずれかが元の(変更されていない)モードに設定されている場合は、実行/検索ビット。

言い換えると、ファイルのchmod u + Xは実行ビットを設定しません。 g + Xは、ユーザーにすでに設定されている場合にのみ設定します。


ファイルが644に設定されていることを確認する必要があり、パスに実行フラグを持つファイルがある場合は、最初に実行フラグを削除する必要があります。 + Xは、実行フラグを既に持っているファイルから実行フラグを削除しません。

例:

chmod -R ugo-x、u + rwX、go + rX、go-wパス

更新:最初の変更(ugo-x)によってディレクトリが実行不能になるため、これは失敗したように見えます。そのため、その下にあるすべてのファイルは変更されません。