web-dev-qa-db-ja.com

ファイルとdirに分けて、再帰的なchmodを修正します

次のように、ディレクトリを再帰的にchmodしたいと思います。

  • ファイルは0664です
  • ディレクトリは0775です

それをより良く、より短く、より空想的にする方法は? :)たぶん、どういうわけかumaskを使用しますか?

すべてのfindソリューションが長すぎます:私は常にコピーアンドペーストで終わります:)

5
kolypto

Chmodのバージョンによっては、次のことができる場合があります。

chmod -R . ug+rwX,o+rX,o-w

capital Xに注意してください。これにより、実行ビットのいずれかがすでに設定されているディレクトリおよびファイルに実行可能ビットが設定されます。

大文字のXは「+」でのみ使用でき、「=」や「-」では使用できないことに注意してください。

15
wfaulk

何よりも良く、短く、空想?

cd /directory
find . -type d -exec chmod 0755 {} +
find . -type f -exec chmod 0664 {} +
7
user9517

ミックスにワンライナーを追加する

find -type f -exec chmod 0644 {} + -o -type d -exec chmod 0755 {} +
4
Dmitri Chubarov
find /dir -type f -print0 |xargs -0 chmod 0644
find /dir -type d -print0 |xargs -0 chmod 0775

実際の環境で使用する前にテストしてください

3
NoNoNo

私はこれをFATファイルシステムからコピーされたものすべてに使用しています。

chmod -R a-x+X .

Mac OS Xなどで機能しない場合は、GNUバージョンのコマンドchmod:を試してください。

gchmod -R a-x+X .
1
Messa

あなたがこれをやろうとしている理由についてもっと知らずに、人々が使う傾向がある最も一般的な理由は次のいずれかです:

  • ファイルとディレクトリは他の書き込み可能です

    chmod -R o-w /path/to/dir

  • ファイルとディレクトリはグループ書き込み可能ではありません

    chmod -R g+w /path/to/dir

または、2つを組み合わせます。

chmod -R o-w,g+w /path/to/dir

または、ファイルとディレクトリにデフォルトで正しいアクセス許可を付与する場合は、作成プロセスのumaskを変更します。

基本的に、chmodで数値モードを使用することが正しいのはまれな日です。通常、ディレクトリにはすでに実行可能ビットセットがあり、それを必要としないファイルにはそれが不足しているので、+および-演算子はそうする必要をなくしますか?

1
BMDan