shell

findでまとめてパーミッション変更

More than 1 year has passed since last update.

注意
投稿練習のため自身のweblogに投稿した内容(findでまとめてパーミッション変更 - hadacchi blog)を転載したものです.

課題

sambaでファイルサーバを運用している時に,別ユーザでのアクセスが問題になることがまれによくある.
なのでディレクトリは755に,ファイルは644にしたい.

find + chmod

# まとめてchmodに渡す.数が多いとコマンドの上限文字数を越える
$ find . -type d -exec chmod 755 {} +
# 1つずつchmodに渡す.数が多いとえらい時間がかかる
$ find . -type d -exec chmod 755 {} \;

find + xargs + chmod

# まとめてchmodに渡す.数が多いとコマンドの上限文字数を越える
$ find . -type d -print0 | xargs -0 chmod 755
# 20ずつまとめてchmodに渡す.上3つと比べるとマシ
$ find . -type d -print0 | xargs -0 -n 20 chmod 755

ちなみに,こちらの記事(ファイルやディレクトリのパーミッションを一括で置換したい - Qiita)のようにchmodだけでやる方法があるらしく,多分これが一番速い(試してないけど)