特定フォルダ内の最新2つを残して残りを削除する

業務でちょっと厄介な内容を抱えてしまったので、いろいろ調べていました

 

◆要件

/tmp/sampleフォルダ内に、毎日1件ずつファイルがたまっていく

容量の問題から、最新2ファイルを残して他を削除したい

なお、日付でやるとファイル受け渡しがなんらかの原因でストップした場合、

データロストしてしまうことになるので、find -mtimeは使わない

 

lsと、tailをうまく利用することで以下のように書くことができました

 

ls -dt -1 /tmp/sample/* | tail -n +3 | xargs rm

 

tailの-nで+を指定すると、上位からX番目以降のファイルを取り出してくれます

lsで最新の絶対PATHで並べ替えて、3番目以降のファイルをrmで消していけばOKです

 

以上!