ディレクトリにN個以上のファイルがある場合、ディレクトリから最も古いファイルを削除するbashスクリプトをどのように作成できますか? [コピー]

ディレクトリにN個以上のファイルがある場合、ディレクトリから最も古いファイルを削除するbashスクリプトをどのように作成できますか? [コピー]

スクリプトの書き方が気になります。

ディレクトリ内のファイル数を数えます。

この数値が指定された数値 N より大きい場合、ディレクトリ内の最も古いファイルは削除されます。

追加の好意を得るには、カウント/削除に.zipファイルのみを含めてください。

ベストアンサー1

たとえば、フォルダに50を超えるファイルがある場合にのみ作業を実行するには、次の手順を実行します。

shopt -s dotglob nullglob
for file in *; do
    [[ -f $file ]] && files+=( "$file" )
done
if (( ${#files[@]} > 50 )); then
    IFS= read -r -d $'\0' line < <(find . -maxdepth 1 -type f -printf '%T@ %p\0' 2>/dev/null | sort -z -n)
    rm "${line#* }"
fi

おすすめ記事