ウェブサイト検索

Linux でディレクトリを再帰的に検索して削除する方法


以前の記事の 1 つで、Linux のファイル システム上で最も多くのディスク領域を消費している上位のディレクトリとファイルを見つける方法について説明しました。このようなディレクトリに重要なファイルやサブディレクトリ (古いバックアップ、ダウンロードなど) が含まれていないことに気付いた場合は、それらを削除してディスク上のスペースを空けることができます。

こちらもお読みください: ファイルとディレクトリのディスク使用量を調べるための 10 の便利な du (ディスク使用量) コマンド

この短いチュートリアルでは、Linux ファイル システムでディレクトリを再帰的に検索して削除する方法について説明します。

上記の目的を達成するには、以下の構文を使用して find コマンドをrm コマンドと組み合わせて使用できます。ここで、末尾の + 記号により、複数のディレクトリを同時に読み取ることができます。

find /start/search/from/this/dir -name "dirname-to-delete" -type d -exec /bin/rm -rf {} + 

注意: rm コマンド は Linux で使用するのが最も危険なコマンドの 1 つであるため、慎重に使用する必要があります。重要なシステムを誤って削除してしまう可能性があります。ディレクトリが削除され、システム障害が発生する可能性があります。

以下の例では、files_2008 というディレクトリを検索し、再帰的に削除します。

$find ~/Downloads/software -name "files_2008" -type d -exec /bin/rm -rf {} + 

findxargs を使用することもできます。次の構文では、-print0 アクションにより、標準出力に完全なディレクトリ パスを出力し、その後に null 文字を出力できます。

find /start/search/from/this/dir -name "dirname-to-delete" -type d -print0 | xargs -0 /bin/rm -rf "{}"

上記と同じ例を使用すると、次のようになります。

find ~/Downloads/software -name "files_2008" -type d -print0 | xargs -0 /bin/rm -rf "{}"

最後になりましたが、データのセキュリティが心配な場合は、Linux で「ファイルとディレクトリ」を完全かつ安全に削除する 3 つの方法を学習するとよいでしょう。

Linux でのファイルとディレクトリの管理に関する役立つ記事をぜひ読んでください。

  1. fdupes – Linux で重複ファイルを検索して削除するコマンドライン ツール
  2. 「FSlint」ツールを使用して Linux で重複/不要なファイルを見つけて削除する方法
  3. 拡張子の付いた 1 つまたはいくつかのファイルを除いて、ディレクトリ内のすべてのファイルを削除する 3 つの方法

この記事では、Linux 上でディレクトリを再帰的に検索して削除する方法を説明しました。このトピックに質問や追加のアイデアがある場合は、以下のコメント セクションを使用してください。