更新されたファイルがない場合は、ディレクトリを削除します。

更新されたファイルがない場合は、ディレクトリを削除します。

過去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日前に更新されます。

関連情報