特定の期間のフォルダを見つけて、特定のサイズでフィルタリングして一致するフォルダを削除しますか?

特定の期間のフォルダを見つけて、特定のサイズでフィルタリングして一致するフォルダを削除しますか?

私はしばらくこの問題を経験しています。これが私の非常に限られた配管能力にもかかわらず効果があるように見える私がついに思い出したものです。

私の目標を達成するには、これが悪い方法のようです。これをより効率的に実行する簡単な方法はありますか?

$ find /home/data/cam*/* -maxdepth 0 -type d -mtime +30 \
    -exec du -sm {} \;| awk '{if ( $1 > 3000 ) print $2}' | xargs rm -rf

答え1

実際には悪くありません。その/home/data/cam*/* -maxdepth 0部分が大丈夫で、ディレクトリ名に改行文字が含まれていないと仮定すると、次のようになります。

find /home/data/cam*/* -maxdepth 0 -type d -mtime +30 -exec du -sm {} + | \
    awk '$1 > 3000' | cut -f 2- | xargs rm -rf

-exec du -sm {} +最適化なので、duすべてのディレクトリに対して実行されるわけではありません。そして、awk '$1 > 3000' | cut -f 2-ディレクトリ名にスペースが含まれている場合でもこれが機能することを確認してください。

関連情報