ファイル名に基づいてファイル権限を変更する

ファイル名に基づいてファイル権限を変更する

r名前が権限の組み合わせ(、、、w)で構成される512ファイルを作成しましたx

私は次のようにそれらを作ります:

touch ./{r,-}{w,-}{x,-}{r,-}{w,-}{x,-}{r,-}{w,-}{x,-}

ファイルが名前で認識されているのと同じ権限を持つことを望みます。つまり、ファイルにr-x--xrwx権限が必要ですr-x--xrwx

私はこれを試みます:

for i in *
do
    u=${i:0:3};g=${i:3:3};o=${i:6:3}
    chmod u=$u,g=$g,o=$o -- $i
done

一部のファイルは正しい権限を持っていますが、他のファイルの場合、権限は名前と一致しませんでした。この問題をどのように解決できますか?

ベストアンサー1

渡す引数には記号がchmod含まれていますが、-含めないでください。この問題を解決するには、-次の記号を削除します。

for i in *
do
  u=${i:0:3};g=${i:3:3};o=${i:6:3};
  u=${u//-/};g=${g//-/};o=${o//-/};
  chmod -- "u=$u,g=$g,o=$o" "$i"
done

おすすめ記事