最初の引数としてモードを渡し、後続の引数として1つ以上のディレクトリ名を渡すことによって呼び出すことができるスクリプトを次に示します。Linuxでは、ディレクトリ名を渡さない場合、渡されたものと同じになります.(現在のディレクトリ)。このスクリプトrchmodfに名前を付け、実行可能(chmod a+rx /path/to/rchmodf)にして、どこかに配置します$PATH。
#!/bin/sh
mode=$1; shift
find "$@" -type f -exec chmod "$mode" {} +
説明:mode=$1; shift変数modeをスクリプトの最初の引数に設定し、その最初の引数をリストから削除します。"$@"すべての引数のリストに展開されます。
必要に応じて、ディレクトリモードとファイルモードの両方を受け入れるスクリプトを作成できます。
#!/bin/sh
dir_mode=$1; shift
file_mode=$1; shift
find "$@" -type d -exec chmod "$dir_mode" {} + -o -type f -exec chmod "$file_mode" {} +
744は便利なファイルモードではないことに注意してください。644(ユーザーが書き込み可能で誰でも読み取り可能)と755(これも世界中で実行可能)の方がはるかに一般的です。また、ツリー内のすべてのファイルを実行可能または実行不可能に変更しても、ほとんど役に立ちません。おそらく、このスクリプトを+rX(capital X、すでに実行可能なディレクトリとファイルに対してのみ実行可能ビットを設定するための)引数で呼び出したいと思うでしょう。実際、Xシンボリックモードは、おそらくこれらのスクリプトを使用した後のものですchmod -R +rX .。
bashまたはzshを使用すると、再帰的に動作する別の方法がありますが、ディレクトリに対してのみ実行できます。bashの場合、バージョン4が必要で、shopt -s globstar最初に実行します。
chmod a+rx **/*/
zshのでは、あなただけの接尾辞でファイルに基づいて行動することができます(.):chmod a+r **/*(.)。
ノーチラスの質問を渡します。