[GNU find]特定の名前のファイルのファイルモードを変更する


特定の名前のファイルを検索し、一括でファイルモードを変換するというケースが業務で発生しました。
このとき、以下のように対応したのでメモしておきます。


対応方法

正規表現をfindコマンドで使用し、ファイルモードを調べ、条件に合致したファイルのみファイルモードを変更

GNU findを使用する環境下で、以下のようなケースに対応する必要がありました。
・ファイルの拡張子が.orgで、その前にpng, jpg, gifのいずれかが付く
・ファイルモードが777ではない
・上記に合致するファイルのファイルモードを一括で777に変更する

というケースに対応するため、以下のワンライナーのコマンドを書いて対応しました。

find . -regex ".*\.\(png\|jpg\|gif\)\.org" | xargs ls -la | awk '{if($1!=-rwxrwxrwx){print $NF}}' | xargs chmod 777