回答:
GNU chmod
(Ubuntu上)の単一コマンドバリアント(現在のディレクトリから開始):
chmod -R -x+X .
説明:
-R
-再帰的に操作する-x
-すべてのユーザーの実行可能フラグを削除する+X
-ディレクトリの場合、すべてのユーザーに実行可能フラグを設定しますこの場合、X
すべての実行可能フラグがによってクリアされたため、大文字はディレクトリにのみ適用され-x
ます。それ以外の+X
場合、フラグがユーザー、グループ、またはその他のいずれかに最初に設定されていた場合にも実行可能フラグを設定します。
BSD chmod
(Mac OS Xにあります)では、2つのコマンドで個別に行う必要があります。
sudo chmod -R -x * && sudo chmod -R +X *
(メインディレクトリに隠しファイルも含めたい場合は、*を。(ポイント)に変更する必要がありますが、テストはされていません。)
chmod -R a-x+X *
umask
いない場合に発生する可能性がありますx
。デフォルトを使用しますumask
か、それとも変更しましたか?umask
コマンドの出力を送信してください。:あなたのソリューションに加えて、この可能性もありますchmod -R a-x,+X *
設定されますx
、あなたに応じて許可がumask
。答えを更新しますが、BSD / Mac OS Xの動作を最初に確認したいと思います。
find
ワン・シングまあを行う簡単なツールを組み合わせることのスタイルについては、以下の答えでバリアントを。
.
代わりに使用*
します
最初に正しいパスにcdした場合:
find . -type f -exec chmod -x {} \;
または
chmod -x $(find . -type f)
findは、pathでタイプ 'f'(通常のファイルを意味する)のすべてのファイルを見つけます。そして、各ファイルでchmod -xを呼び出します。ファイル名と\;の代わりに{}が使用されます。chmodコマンドを終了します。
find
サポートしている場合は、-exec ... \+
代わりに使用-exec ... \;
します—必要なfork
+ exec
の数は少なくなります。そうでない場合は、を使用しますfind ... -print0 | xargs -0 ...
。
find . -type f -perm +111 -exec chmod -x {} \;
find
の支持体は-print0
、私はそれもサポートしますかなり確信している-exec