2010年12月22日

sedで複数のファイルをまとめて処理する

sedで複数のファイルをまとめて処理する方法

■ 複数のファイルをまとめてgrepする
$ /bin/ls SystemOut* | sed -e 's/.*/cat & | grep Error /' | /bin/sh

■ 複数のファイルをまとめて圧縮する
$ /bin/ls -1 *.txt | sed -e 's/.*/\/usr\/bin\/gzip & /' | /bin/sh

■ 指定の日数が経過したファイルをまとめて削除する
/usr/bin/find -ctime +5 | sed -e 's/.*/\/bin\/rm -f &/' | /bin/sh


実行したコマンドを残しておきたい場合は、こんな感じ
/usr/bin/find -ctime +5 | sed -e 's/.*/\/bin\/rm -f &/' > rm.sh
/bin/sh rm.sh


■ 解説

1. lsコマンドなどでファイル一覧を出力する(ls -1 だとファイル名だけ表示される)

2. sedコマンドで置換をする(この例では置換というより文字列追加)
# sedコマンドについて詳しく知りたい人はググってください。

ちなみに、&(アンパサンド)の部分には検索文字列と一致した文字列が入ります。
この例だと/.*/なので、全ての文字が一致します。

ファイル名が「sample.txt」だった場合、
s/.*/cat &/ → "cat sample.txt" になります。

3. パイプでシェルに渡して実行する

sed と awk を知ると、Linux運用管理がかなり楽になるのでオススメ。

タグ:Linux SED

posted by まきすけ at 03:59 | Comment(0) | TrackBack(0) | Linuxとか
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/174440522
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック