過去N日間に変更されていないディレクトリのみを削除したいと思います。変更とは、Nよりも最新の内容を含むすべてのファイルを意味します。
私は何かをしました/次のようなものを見つけましたこれ しかし、私が望むようにはなりません。
答え1
問題のディレクトリ(ここでは現在のディレクトリの各サブディレクトリ)を繰り返して、出力された行数を計算し、数値がゼロの場合はfind
ディレクトリを削除します。このfind
コマンドには、指定されたディレクトリに「N」日以内に変更されたファイルのみが必要です(最後の「N」日以内に変更されます)。
N=3
for dir in */
do
count=$(find "$dir" -type f -mtime -"$N" -print | wc -l)
[ "$count" -eq 0 ] && echo rm -r -- "$dir"
done
echo
結果が正確に見える場合は削除してください。
答え2
私の考えはこんな感じです。
touch -d "4 days ago" .reference_file
for dir in */
do
[ $dir -ot .reference_file ] && rm -rf "$dir"
done
まず、作成日が「4日前」に設定された.reference_fileファイルを生成します。
-ot
次に、その作業ディレクトリのすべてのディレクトリに対して、修正時間(演算子)が.reference_fileの修正時間よりも早いことを確認します。
もしそうなら - ディレクトリを削除します。rm -rf $dir
このスクリプトが実行されるたびに、.reference_fileの変更日は常に4日前に更新されます。