SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【linux】ある種類のファイルを見つけて、圧縮したい

問題

あるディレクトリの中にあるログファイルたちの中で、

一定期間以上古いログファイルを探して、

圧縮したファイルを

所定のディレクトリに作りたい。

答え

素直に書くとこんな感じ?

#!/bin/bash
 
for i in `find /xxx/yyy -name "*.log" -mtime +14`
do
        filename="/aaa/bbb/"`basename $i`".gz"
        if [ ! -f $filename ]; then
                gzip -c $i > $filename
        fi
done

書き方を少し変えて1行にまとめると、

for i in `find /xxx/yyy -name '*.log' -mtime +14`; do [ ! -f /aaa/bbb/${i##*/}.gz ] && gzip -c $i > /aaa/bbb/${i##*/}.gz; done

なお、この例では、圧縮元のファイルについては特に処理しておらず、そのまま残してある。

関連するメモ

コメント