たくさんのソースコードファイルから最近更新されたファイルだけを抽出したいときがあると思います。
findコマンドで指定した日数以内に更新されたファイルだけを抜き出すことができます。
たとえば2日以内の場合は
1 |
find -regex ".*.class" -mtime -2 -ls |
この例では正規表現も使って.classファイルだけを対象にしています。
在宅プログラマーの備忘録として2005年に始めたブログです。
たくさんのソースコードファイルから最近更新されたファイルだけを抽出したいときがあると思います。
findコマンドで指定した日数以内に更新されたファイルだけを抜き出すことができます。
たとえば2日以内の場合は
1 |
find -regex ".*.class" -mtime -2 -ls |
この例では正規表現も使って.classファイルだけを対象にしています。
ファイルを検索するfindコマンド、結果を引数として渡すxargsコマンド、そして文字列置換を行うsedコマンドを組み合わせることで、複数のファイルの文字列を一括置換することができます。
たとえば、拡張子が.phpのファイルの「$user」を「$member」に置換したいときは、
1 |
find *.php | xargs sed -i -e "s/\$user/\$member/g" |
のように記述します。
毎日たまっていくログを放置しているととんでもない数になったりしますよね。
そこで古いファイルだけを一括で削除したいと思ったときは、findコマンドで抽出して削除できます。
35日以前のファイルを削除
1 |
find /tmp/logs/* -mtime +35 | xargs rm -rf |
削除ではなく移動させたい場合は
1 |
find /tmp/logs/* -mtime +35 | xargs mv --target-directory=./backup |
ファイル名を検索するときにはfindコマンドが使えます。
1 |
find . -name 'log_*' |
これで再帰的に検索します。