回答:
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