web-dev-qa-db-ja.com

ディレクトリでのみ再帰的なchmodを実行するにはどうすればよいですか?

Centos 4のツリーの権限を変更して、ディレクトリからすべてのディレクトリの実行権限を再帰的に追加したい。通常のchmodを使用すると、ディレクトリ以外のファイルも変更されます。

chmod -R o+x /my/path/here

ディレクトリにのみ影響を与えるにはどうすればよいですか?

33
WilliamKF

-type ddirectories)に対してfindを実行し、-execプライマリを使用してchmodをフォルダーに対してのみ実行します。

find /your/path/here -type d -exec chmod o+x {} \;

目的のオブジェクトに対してのみ実行されるようにするには、最初にfind /your/path/here -type dだけを実行します。見つかったディレクトリを出力するだけです。

50
Daniel Beck

Wikipediaの コマンドラインの例-chmod を参照してください。

chmod -R a-x+X directory    remove the execute permission on all files in 
                            a directory tree, while allowing for directory browsing.

ダニエルによって追加されたように:これはあなたのケースでうまくいくはずです:

chmod -R o+X directory
18
user118305
find /home/mydir -type d | xargs chmod ugo+rx

これはCentOS6で機能しますが、上記のfind -execでは機能しません。基本的に、ディレクトリのリストをxargsコマンドにパイプして、それらをchmodに送信します。次に、chmodは、ディレクトリに対してユニバーサル読み取りと実行(検索)を設定します。これを自宅のすべてのユーザーに対して行うには、Sudoを使用します。

Sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
1
Mark White