kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

条件を満たす複数ファイルに対して一括操作

LinuxUnixで作業していると、ある条件を満たす複数ファイルに対して、一括した操作をしたい場合があります。
簡単なシェルを組んで操作しても良いのですが、他にも次のような方法があることを、人に聞きましたのでメモしておきます。

概要

  1. findコマンドで条件を満たすファイルを一覧出力する。
  2. 出力された内容をawkにパイプして、操作したい内容に合わせて、コマンドを文字列としたものを出力する。
  3. さらに、出力された内容をshへパイプして実行する。

一週間前のファイルを一括削除する例

1.findコマンドで対象ファイルを確認します。

find . -mtime +7 -ls

2.コマンドを文字列として作成します。

find . -mtime +7 | awk '{print "rm -f",$1}'

3.削除を実行します。

find . -mtime +7 | awk '{print "rm -f",$1}' | sh

いきなり全部を実行するのが危険な場合は、上記2で出力された内容を、1件だけコピー&ペーストして実行してみると良いかもしれません。

4.上記1のコマンドを再度実行し、結果確認して終了。

以上です。