再帰的には、フォルダだけをchmodするか、スクリプトまたはノーチラスメニューを介してファイルのみをchmodしますか?

再帰的には、フォルダだけをchmodするか、スクリプトまたはノーチラスメニューを介してファイルのみをchmodしますか?

これは以前に議論されたことがあります。ここ

私が知りたいのはこれを変換する方法です。

このフォルダ内のファイルのみを再帰的にchmodします。

find . -type f -exec chmod 0600 {} \;

このフォルダ内の再帰的なchmodフォルダのみ:

find . -type d -exec chmod 0755 {} \;

bashスクリプトに変換すると、次のようになります。

ファイルの場合:

rchmodf 744 .

ディレクトリの場合:

rchmodd 755 .

そして…可能であれば、ノーチラスの右クリックメニューオプションに入ることもできます。

ベストアンサー1

パターンを最初の引数として渡し、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(大文字X、すでに実行可能なディレクトリ、およびファイルに対してのみ実行可能ビットの設定)。実際には、Xシンボルモードは次のスクリプトを使用して必要なものですchmod -R +rX .

bashまたはzshを使用する別の再帰的な方法がありますが、ディレクトリに固有のものです。 Bashの場合はバージョン4が必要です。最初に実行してくださいshopt -s globstar

chmod a+rx **/*/

zshでは、サフィックス:を持つ(.)ファイルにのみ作業できますchmod a+r **/*(.)

ノーチラスの質問をお伝えします。

おすすめ記事