条件を満たす複数ファイルに対して一括操作
LinuxやUnixで作業していると、ある条件を満たす複数ファイルに対して、一括した操作をしたい場合があります。
簡単なシェルを組んで操作しても良いのですが、他にも次のような方法があることを、人に聞きましたのでメモしておきます。
概要
- findコマンドで条件を満たすファイルを一覧出力する。
- 出力された内容をawkにパイプして、操作したい内容に合わせて、コマンドを文字列としたものを出力する。
- さらに、出力された内容を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のコマンドを再度実行し、結果確認して終了。
以上です。