findコマンドの結果に基づいてファイルをchmodする方法

findコマンドの結果に基づいてファイルをchmodする方法

WW(World Write)権限が666のファイルを見つける必要がある状況が発生し、そのファイルを664に変更する必要があります。これにはこのコマンドを使用しました。

find /dir/stuct/path -perm -0002 -type f -print > /tmp/deepu/permissions.txt

コマンドを実行すると、WW権限を持つファイルを取得します。今私の要件は

find /dir/stuct/path -perm -0002 -type f chmod 664

私の構文は正しいですか?

答え1

あなたのニーズについて考えてください。ディレクトリツリーに実行可能ファイル(スクリプトまたはバイナリ)がありますか?それでは、実行権限(自分の権限も含む)を削除しますか、それとも実行権限をそのまま維持しますか?実行権限をそのまま維持するには、chmod o-w削除(減算)を使用する必要があります。勝つ儀礼的許可ああこのフィールドにのみ適用されます。

また、Anthonが指摘したように、find他の答えに与えられたコマンドは、見つかったchmod各世界の書き込み可能ファイルに対してプログラムを一度実行します。もっと効率的だと思います。

find  top-level_directory  -perm -2  -type f  -exec chmod o-w {} +

複数のファイルを同時に実行しchmodて、実行回数を最小限に抑えます。

PS そうする必要はありません2

答え2

find /dir/stuct/path -perm -0002 -type f -exec chmod 664 {} \;

「{}」は find で見つかったファイルを示します。この「\;」は、実行する必要があるコマンドを終了します。

関連情報