- 締切済み
履歴ファイルの削除方法?
履歴ファイルを filename_YYYYMMDDhhmmss.dat という名前で作成しています。 今日から日付で4世代以前のファイルを削除したい場合(最新3世代を残す)、 どのようにすればよいのでしょうか? 削除は、シェルスクリプト(b shell)で行います。 perl,awkは使わないでお願いします。 例 test_new.dat ←残る (削除対象外) test_old.dat ←残る (削除対象外) test_old.dat_20060610000000 ←消える test_old.dat_20060610000001 ←消える test_old.dat_20060611000000 ←消える test_old.dat_20060611000001 ←消える test_old.dat_20060612000000 ←消える test_old.dat_20060612000001 ←消える test_old.dat_20060613000000 ←残る (3世代目) test_old.dat_20060613000001 ←残る (3世代目) test_old.dat_20060614000000 ←残る (2世代目) test_old.dat_20060614000001 ←残る (2世代目) test_old.dat_20060615000000 ←残る (1世代目) test_old.dat_20060615000001 ←残る (1世代目)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mac_res
- ベストアンサー率36% (568/1571)
date commandの-d optionはシステムによって異なりますが、過去の日付を示す適当なものに置き換えてください。 -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- rm -rf tmp mkdir tmp mv test_old.dat_* tmp pat=`date '+%Y%m%d' -d '1 day ago'` mv tmp/test_old.dat_$pat* . pat=`date '+%Y%m%d' -d '2 days ago'` mv tmp/test_old.dat_$pat* . pat=`date '+%Y%m%d' -d '3 days ago'` mv tmp/test_old.dat_$pat* . rm -rf tmp
お礼
この方法は最初に思いつきましたが、場合は4日より過去分が削除されないのでダメなんです。。。