ディレクトリ構造全体を再帰的に処理できる (現在の作業ディレクトリから開始するか、開始場所を指定する必須引数を指定) シェル スクリプトを作成するためのコードまたはチュートリアルを教えていただけますか。次の操作を実行できます。
- 項目がディレクトリであるかどうかを判別し、ディレクトリである場合は、
chmod 755
... - アイテムがファイル(ディレクトリではない)であるかどうかを判断します
chmod 644
。
私は Ubuntu、Debian、RHEL ベースなどとの互換性を求めているので、特定の言語でタグ付けしていません。私はこれを Bash で使いたいのですが、ZSH スクリプトがあればそれも動作します。
答え1
私はこの1行のコマンドに慣れています(現在の作業ディレクトリから再帰的に実行されます)
find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +
説明:
find . # starting in curdir find
-type d # any directory
-exec chmod 0755 '{}' # and chmod it to 755
+ # (variant of -exec look find man page)
-or # or
-type f # any file
-exec chmod 0644 '{}' # and chmod it to 644
+ # (as above)
答え2
簡単な答え:
chmod -R a+rX .
+X
(大文字の X に注意) は、あるユーザーにすでに実行権限がある場合に、実行権限を与えることを意味します。所有者に適切な権限が付与されているディレクトリ ツリーがあり、それをすべてのユーザーがアクセスできるようにする場合は、このコマンドを使用するのが適切です。このコマンドは、ディレクトリを誰でも実行可能にするだけでなく、実行可能ファイルも実行可能にします。
書き込み権限を所有者のみにリセットし、setuid/setgidビットをクリアしたい場合は、
chmod -R a-ws,u+w,a+rX .
どのファイルも実行可能にしたくない場合は、必須の zsh 2 行コードを使用します。
chmod 755 **/*(/)
chmod 644 **/*(.)