なぜこれが機能しないのですか?すべてのファイルを644に、すべての-dを755に変更しようとしています:
find . -type f -exec chmod 644 {} ;
i get:find: `-exec 'の引数がありませんありがとう
Xargsへのパイピングは、findの内部で実行できる汚い方法です。
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
次のような他のオプションを使用してさらに制御できます。
find . -type d -user harry -exec chown daisy {} \;
Findを使用すると非常にクールなことができ、非常に危険なこともできます。 「man find」をご覧ください。長いですが、一読する価値があります。そして、いつも覚えているように:
良い代替案はこれです:
find . -type f | xargs chmod -v 644
およびディレクトリの場合:
find . -type d | xargs chmod -v 755
より明確にするために:
find . -type f | xargs -I{} chmod -v 644 {}
私はこれを頻繁に必要とするので、~/.bashrc
ファイル:
chmodf() {
find $2 -type f -exec chmod $1 {} \;
}
chmodd() {
find $2 -type d -exec chmod $1 {} \;
}
これで、これらのショートカットを使用できます。
chmodd 0775 .
chmodf 0664 .