• 締切済み

シェルスクリプトのバックアップ世代管理について

シェルスクリプトで質問です。まだ勉強しはじめなのですが、条件がついた時のファイル削除がわかりません。 どなたか教えていただけると助かります。 やりたいことは以下です。 /home/hogeフォルダ内に以下のファイルがあります。 sample20150101 sample20150102 sample20150103 otherXX otherYY otherYYYYMMDD 他にも多数 この中からsampleファイルでファイル名の後ろについている日付が古いものを削除したいです。 ただし、更新日がファイル名の末尾にある日付とは限りません。 またsampleYYYYMMDDは末尾の日付が直近の3ファイル(3日分)は残したいです。 他のファイルには影響ないようにしたいとも考えてます。 ネットで調べて更新日で世代管理はなんとか出来たのですが、ファイル名で判定するやり方がわからず… こういった場合、どのようにスクリプトを書けばいいのでしょうか? まだ勉強しはじめたばかりなので知識がなくて申し訳ないのですが、教えていただけると助かります。 よろしくお願いします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

数字順に並べて、数字が最大の3つだけのこして他は削除と言うことでいいですか? cd /home/hoge ls sample[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | sort -r | tail -n +4 | xargs -r rm 対象ファイルを、大きい順にならべて、4つ目以降だけ取り出して、削除。

回答No.1

毎回わざわざ新規ユーザーを作りなおして質問してるのはなぜ?

関連するQ&A

専門家に質問してみよう