2016-12-20 5 views
1

私は、いくつかのフォルダ/ファイル(再帰的)をユーザの権限と同じ権限にする必要があります。だから、:chmod - グループ/ワールドへのユーザ権限の複製

  • 0755 - > 0777
  • 0644 - > 0666

私はどのように行うことができますか?おそらく私が知っている少し秘密の命令?

簡単な方法がない場合は、ループを作成してテスト/割り当てする必要があります。最終的に私は唯一の3種類に対処する必要があります。

フォルダが777、ほとんどのファイル666、実行ファイル777

答えて

2

find与えられたアクセス許可セットを使用してファイルを見つけ、それらをカバーするために必要なchmod呼び出しの可能な最小の数を実行しているの作業を行うことができます:あなたは少しループが必要です。

find . \ 
    '(' -perm -0700 -exec chmod 0777 '{}' + ')' -o \ 
    '(' -perm -0600 -exec chmod 0666 '{}' + ')' 
0

あなたのためにするコマンドがないはずです。

for file in $(find . -print) 
do 
    if [ -d $file -o -x $file ]; then 
    chmod 777 $file 
    else 
    chmod 666 $file 
    fi 
done 
+2

これは非常にバグが多いです。空白やワイルドカードでファイル名がどうなるかを見てください。また、http://shellcheck.net/で実行し、引用問題を修正してください。 –

+0

... 'for file in $(find。-print)'の一般的な実例は、[BashPitfalls#1](http://mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A)を参照してください。 mp3.29)、[DontReadLinesWithFor](http://mywiki.wooledge.org/DontReadLinesWithFor)を参照してください。 –

+0

...あなたのシェルスクリプトで 'find'の任意のファイル名を安全かつ正確に処理したい場合は、' -exec'アクションを使ってそれらをargvのスクリプトに渡すか、 '-print0 NULで区切られたストリームを生成します。後者の例については[BashFAQ#1](http://mywiki.wooledge.org/BashFAQ/001)の[-print0]を、[UsingFind](http://)の "複合アクション"のセクションを検索してください。両方の議論のためのmywiki.wooledge.org/UsingFind)。 –

関連する問題