Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

Linuxのfindコマンドでディレクトリ内の空ファイル(0バイト)を検索する方法

本記事では、Linuxのfindコマンドの使い方を解説した以前のガイドの続編として、「空」(ゼロバイト)のファイルを検索する方法をご紹介します。

先日、Linuxサーバーのメンテナンスを行っていたところ、時間の経過とともにユーザーが作成して放置されたままの空のファイルが多数見つかりました。そこで、システム全体を走査してこうしたファイルの件数とパスを一覧表示するシェルスクリプトを作成することにしました。

まずは、同様の検索を実行できるシンプルなコマンドから見ていきましょう。

空ファイルを検索する基本のコマンド

# find -L /home/stewiegriffin -maxdepth 1 -type f -size 0
/home/stewiegriffin/temp.log
/home/stewiegriffin/brainstorm_notes.txt
/home/stewiegriffin/mail.log
/home/stewiegriffin/niptuck.html

各オプションの意味

上記のコマンドは、サイズが0バイトのファイルを検索します。findコマンドはデフォルトでシンボリックリンクを除外するため、-Lオプションを付けてシンボリックリンクも検索対象に含めています。-maxdepth 1は、指定したディレクトリ直下のみを検索し、サブディレクトリへは降りないように指示するオプションです。さらに-type fを指定することで、通常のファイルだけを対象としています。

-maxdepth 1を外して同じコマンドを実行すると、/home/stewiegriffin以下のすべてのサブディレクトリから空ファイルを検索します。検索の深さを細かく制御したい場合は、-maxdepth-mindepthを組み合わせて調整することもできます。ディレクトリの階層が深く、扱うファイル数が多い環境では特に役立つ機能です。

逆に「空でない」ファイルを検索する方法

もちろん、この検索条件を反転させて、空ではないファイルをすべて探すことも可能です。やり方は簡単で、上記のコマンドの-sizeパラメータの前に感嘆符(!)を追加するだけです。

# find -L /home/stewiegriffin -maxdepth 1 -type f ! -size 0
/home/stewiegriffin/apache.log
/home/stewiegriffin/how_to_log_your_actions.txt
/home/stewiegriffin/maillog.log
/home/stewiegriffin/niptuck01.html
/home/stewiegriffin/index.html
/home/stewiegriffin/test.php

ただし実行の際は注意が必要です。環境によっては、膨大な数のファイルがヒットする可能性があります。

まだご覧になっていない方は、Linuxのfindコマンドの基本的な使い方をまとめた以前のガイドも、ぜひあわせてチェックしてみてください。

  1. Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現

    Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです

  2. LinuxとmacOSでfdコマンドを使ってファイルを素早く検索する方法

    fdは、従来のfindコマンドのシンプルな代替ツールです。簡潔な構文と短いコマンド体系を採用しており、入力の手間を大幅に減らせるのが特徴です。ただし、その簡潔さゆえに、初めて見たときには意味が分かりにくいという側面もあります。さらにfdは、標準のfindコマンドよりもパターンマッチングを高速に実行できる点も魅力です。この記事では、LinuxおよびmacOSでfdを使う方法を詳しく解説します。 Linuxへのfdのインストール fdは、デフォルトでインストールされているシステムは多くありません。お好みのパッケージマネージャーでダウンロード・インストールすれば、ターミナルからすぐに利用できるよう