findコマンドで見つかった複数のファイルの権限を変更するにはどうすればよいですか?


11

多数のファイルを含むディレクトリがあります。ファイルの一部には755権限があり、他の部分には644権限があります。755権限のあるファイルをに変換したい644。次の行をディレクトリ自体から実行してみました。

find . -perm 755 -exec chmod 644 {}\;

ただし、その結果、アクセス許可はディレクトリ自体に対してのみ変更され、変更後はファイルのアクセス許可が変更されていないことがわかりました。私は何かを逃していますか?


コマンドはディレクトリから実行可能ビットを削除し、chdirしてそこに含まれるファイルを見ることができなくなります。そのため、コマンドは機能していないようです。find ./ -type f -exec chmod -x {} \;代わりに試してください。
Shadur

回答:


17

OK、問題を見つけたようです。存在しなければならないと思われる必須スペースの間{}および\;コマンドは次のようになりますので、:

find . -perm 755 -exec chmod 644 {} \;

のではなく:

find . -perm 755 -exec chmod 644 {}\;

また、ディレクトリのアクセス許可の変更に関する問題は、-type fフラグを追加することで解決できるため、次のようになります。

find . -type f -perm 755 -exec chmod 644 {} \;

6
+代わりに\;を使用して、作成されるサブプロセスの数を減らすことができます。
ケビン

-type dディレクトリを検索します。-type fファイルを検索します。
ミックT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.