![ディレクトリ内の最新の2つのフォルダのみを保持する](https://rvso.com/image/1415072/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E6%9C%80%E6%96%B0%E3%81%AE2%E3%81%A4%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E3%81%BF%E3%82%92%E4%BF%9D%E6%8C%81%E3%81%99%E3%82%8B.png)
次のフォルダを含むディレクトリがあります。
Data-2014-07-10-0240
Data-2014-07-10-0340
Data-2014-07-11-1232
Data-2014-07-12-0530
Data-2014-07-13-1210
最新の 2 つのフォルダーのみを保持し、残りを削除したいです。フォルダーの形式は次のとおりです: Data-YYYY-MM-DD-HHMM
。
フォルダ名を比較して最新のものを保持し、残りを削除する方法はありますか? これは後でシェル スクリプトで対応できます。
答え1
ディレクトリの名前は作成時のタイムスタンプでもあると思います。その場合は、lsディレクトリの変更時刻に従ってファイルを一覧表示します。
これにより、ディレクトリが最新のものから順にリストされます。
cd /PATH/TO/PARENT-DIRECTORY/
ls -lt
最新の 2 つのファイルを除くすべてのディレクトリを削除するには:-
cd /PATH/TO/PARENT-DIRECTORY/
ls -lt | tail -n +4 | awk '{print $9}' | xargs rm -r
注記:まず、テスト環境で試してみて、これがまさに実行したい内容であるかどうか、またそのスクリプトがディレクトリのセットで機能するかどうかを徹底的に確認してください。