特定のサイズと種類より大きいファイルの検索と削除

特定のサイズと種類より大きいファイルの検索と削除

私のサーバーの大容量ログファイルとバックアップを整理したいと思います。

私はこれを思い出しました:

find ./ -size +1M | xargs rm

しかし、mp3とmp4は含めたくありません。ログファイルとアーカイブファイル(zip、tarなど)に対してのみこれを実行したいと思います。

その命令はどんな姿なのでしょうか?

答え1

find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -delete
  • この\( \)構造により、さまざまなファイル名パターンをグループ化できます。
  • オプションを使用すると、-deleteパイプや問題を回避できますxargsこれこれそしてこれ
  • ./または、現在のディレクトリに対して.コマンドを使用する場合はオプションです。find


編集する:Eric Renoufが言ったように、このバージョンがこのオプションをfindサポートしていない場合は、-deleteこの-execオプションを使用してください。

find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -exec rm {} +

ここでコマンドでフィルタ処理されたファイルはすべてコマンドfindに渡されます。rm

答え2

名前でファイルを除外するには、次の構文を使用できます。

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete

またはfindサポートしていない場合delete

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;

答え3

上記の答えに基づいて、次のコマンドを使用して大きなログファイルからサーバーを消去しました(/var/lib/jenkinsでcd'ingした後)。

find -type f -name *log -size +500M -delete

関連情報