7つ以上の場合は、ディレクトリから最も古いファイルを削除します。

7つ以上の場合は、ディレクトリから最も古いファイルを削除します。

毎日のダウンロードはディレクトリに保存されます。

このフォルダ内のファイル数を数えるスクリプトが作成されました。

私が心配しているのは、7つ以上のファイルがある場合は、ディレクトリから最も古いファイルを削除することです。

どうすればいいですか?

# If I tared it up would the target exist
tar_file=$FTP_DIR/`basename $newest`.tar
if [-s "$tar_file" ]
then
    echo Files Found
else
    echo No files
fi

# tar it up
tar -cf tar_file.tar $newest

# how many tar files do I now have
fc=$(ls | wc -l)
echo $fc

# If more than 7 delete the oldest ones

ベストアンサー1

私はこれが古い質問であることを知っています。しかし、他の人が必要な場合に備えて、ここに到着して共有しました。

#!/bin/bash
FTP_DIR=/var/lib/ftp # change to location of dir
FILESTOKEEP=7

ls -1t $FTP_DIR/*.tar | awk -v FILESTOKEEP=$FILESTOKEEP '{if (NR>FILESTOKEEP) print $0}' | xargs rm

デフォルトでは、すべてのファイルを1つの列にリストし、-1変更時間に基づいて最新のファイルからソートします。-t

次に、Iを使用してawk指定されたファイル数にvarを設定し、その数$FILESTOKEEP より大きいレコードを印刷します。

各出力ラインで実行されるxargs結果を渡します。rmawk

lsワイルドカードを使用すると拡張パスが強制的に印刷されるため、ファイルが保存されているフォルダ内でスクリプトが呼び出されない場合は、この方法が機能します。

おすすめ記事