シェルスクリプト総合 その16
■ このスレッドは過去ログ倉庫に格納されています
0547名無しさん@お腹いっぱい。
2010/08/08(日) 22:50:31#!/bin/bash
# ${HOME}以下の相対パスを書く
l=("foo bar/" "hoge fuga/")
cd ~
mkfifo tmp.fifo
find "${l[@]}" -type f -daystart -atime '+7' \
-exec tar -cvzf $(date +%Y%m%d).tar.gz {} + -fprintf tmp.fifo '%P\n' &
while read f; do rm -f "${f}"; done <tmp.fifo
rm tmp.fifo
本当は素直にfindを2回かけて-exec tar、-deleteすればいいんだけど
条件に-atimeが入ってるので1回目と2回目のfindの結果が変わっちゃう
(findではatimeは変わらないけどtarすると変わるらしい)
なのでnamedpipeを作ってrmをwhileで回すという面倒臭いことをしてる
削除するファイルが増えればそれなりに遅くなるはず
誰かもっと良いやり方あれば教えてください
find一発で出来ないものか
■ このスレッドは過去ログ倉庫に格納されています