X
で chmod を使用できます モード文字 (大文字の X) を使用して、ディレクトリのみに実行可能フラグを設定します。
以下の例では、実行可能フラグがクリアされ、すべてのディレクトリに対して再帰的に設定されます:
~$ mkdir foo
~$ mkdir foo/bar
~$ mkdir foo/baz
~$ touch foo/x
~$ touch foo/y
~$ chmod -R go-X foo
~$ ls -l foo
total 8
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 bar
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 y
~$ chmod -R go+X foo
~$ ls -l foo
total 8
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 bar
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 y
少し説明:
chmod -x foo
- 実行可能ファイルをクリアしますfoo
のフラグchmod +x foo
- eXecutable を設定しますfoo
のフラグchmod go+x foo
- 上記と同じですが、Group のみにフラグを設定します およびその他 User には触れないでください (所有者) 許可chmod go+X foo
- 上記と同じですが、ディレクトリにのみ適用されます。ファイルには触れないでくださいchmod -R go+X foo
- 上記と同じですが、これを再帰的に行いますfoo
のすべてのサブディレクトリ
ディレクトリを一覧表示するには、実行アクセス権に加えて読み取りアクセス権が必要です。実行アクセスしかない場合は、ディレクトリ内のエントリの名前を見つけることができますが、他の情報はわかりません (タイプでさえないため、どのエントリがサブディレクトリであるかはわかりません)。これは私にとってはうまくいきます:
find . -type d -exec chmod +rx {} \;