chmodについて

iMac(OS10.1.5)です
いつの頃からか分かりませんが何故かFinkの *.info のアクセス権が変わりました
-rw------- です .infoを参照する為にsudoを使わないと見れなくなりました
/sw/fink/10.1/stable/main/finkinfo 以下は
sudo chmod 644 */* で一発解決出来たのですが
/sw/fink/10.1/unstable/main/finkinfo 以下で
sudo chmod 644 */* を打つと
sudo: unable to exec /sw/bin/chmod: Argument list too long と
エコーバックされます 
chmod自体に容量があるのでしょうか? それともFinkのchmodの問題か?
ちなみに sudo chmod 644 [a-n]*/* などで小分けにすれば書き換え出来ます

投稿日 2003/06/26 20:36

返信: 5

2003/06/27 06:29 Community User への返信

chmod に限らず、*/* と二重(あるいは多重)にワイルドカードを指定すると、その組み合わせの個数によっては Shell が展開しきれなくなるので、Argument list too longというエラーが返ってきます。
意味合いが少し違いますが、/sw/fink/10.1/stable/main/finkinfo/より下層のディレクトリ/ファイルすべてのパーミッション(アクセス権)を再帰的に変更する、という目的であれば、chmodには-R というオプションで指定することができます。
例)
% cd /sw/fink/10.1/unstable/main/finkinfo/
% sudo chmod -R 644 *

※意味合いが少し違う、といったのは、例えば */*ですと
/sw/fink/10.1/unstable/main/finkinfo/foo/bar/A.info
というファイルが存在した場合には、そのファイルは chmod では変更されませんが、-R というオプションでは変更されます。

2003/06/27 10:24 Community User への返信

嗚呼、ディレクトリに対しては実行権が必要なので、そうですね。
失礼いたしましたm(_ _)m。

2003/06/27 10:24 Community User への返信

-R の再起オプションについては参考にさせていただきます
シェルがワイルドカードを解釈出来る限界は
ハード的側面なのかシェル自身がタイムアウトしているのか?
原因を特定できればと思いまして

2003/06/27 10:56 Community User への返信

シェル(sh や csh)の引数に対する限界は
/usr/include/sys/syslimits.h
にある
#define ARG_MAX
で定義されています。
# ごめんなさい、先ほどワイルドカードが展開できる限界と書きましたが、ワイルドカードを展開した後の、いわゆる引数のバイト数の限界ですね。お詫びして訂正いたしますm(_ _)m。
詳しいことは、FreeBSD QandA 2111にあります。
また、今回のchmodコマンドの例のように -R/-r などの再帰的に引数を処理するオプションがないコマンド(例えば cat)で、引数を再帰的に処理させたい場合には、zsh を使うのも一つの手です。
例)
% zsh
% chmod go+rx **/*

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

chmodについて

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。