2014年3月5日水曜日

CentOS findの検索結果でコマンドを実行する

xargsというコマンドがあり、これは左辺の結果を使用して右辺のコマンドを実行できる。

参考サイト
逆引きUNIXコマンド/findで検索したファイルを削除したい

/*---------------------------------------------------------------------------*/
find ./ -name '*.log' | xargs rm
/*---------------------------------------------------------------------------*/

上の例だと拡張子がlogのファイルを検索してrmで削除している。
これを利用して何日前のファイルを削除とかができる。

/*---------------------------------------------------------------------------*/
find -mtime +7 | xargs rm
/*---------------------------------------------------------------------------*/

一週間前のファイルを削除。
mtimeオプションは最後に更新された日付に基づいて検索する。+で以前。-で以内。

このままだとfindの結果がない場合にもrmが実行されてエラーが出るので、
結果がない場合はxargsを実行しないようにする。

/*---------------------------------------------------------------------------*/
find -mtime +7 | xargs --no-run-if-empty rm
/*---------------------------------------------------------------------------*/

findは色々検索オプションが指定できて便利そうなので、有効に使っていきたい。

0 件のコメント:

コメントを投稿