「bigger」という名前のn個のファイルを除くファイルを削除しますか?

「bigger」という名前のn個のファイルを除くファイルを削除しますか?

最後のn個のファイルを除く以前のバージョンのファイルを削除するシェルスクリプトを作成したいと思います。つまり、新しいバージョンをデプロイすると、最後のnバージョンのみが保持されます。

ファイル名の形式は次のとおりです。

appname_releasenumber_date.tar.gz

たぶんこれには簡単な解決策があるかもしれませんが、どうすればいいのかわかりません。

この解決策を見つけましたLinuxでファイル名の一部として日付スタンプを含むファイルを削除するためのよりきれいな方法ただし、必要なファイル数を維持するには、まずいくつかのファイルを作成する必要があります。

ベストアンサー1

もっと一般的にするために@Saltonの答えを変更します。

ls -1 | sort -t_ -n -k2 | head -$((`ls | wc -l`-1)) | xargs rm -rf

これはバージョン番号でソートし、日付を完全に無視します。したがって、以前のバージョンの日付が最新の場合、古いバージョンは削除されます。

おすすめ記事