【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
なお、この例では、圧縮元のファイルについては特に処理しておらず、そのまま残してある。
コメント