Linux ベースのオペレーティング システムでディレクトリを検索する必要がある場合がありますが、Linux ベースのオペレーティング システムに存在するさまざまなファイルの場所を見つけるための実際のコマンドがわからないため、苦労しています。 Linux の find directory コマンドは、この目的で使用されます。
検索コマンドは、Unix または Linux ベースのシステムの両方でファイルの場所を検索するために使用されます。 find コマンドは「findutils」パッケージに含まれており、すべての Linux ディストリビューションに存在します。さまざまな条件を適用しながらディレクトリやファイルを探すことができます。アクションは、結果に影響を与える適用条件に従って実行されます。
Linux find directory コマンドの概要
find コマンドの最も単純な形式は次のようになります:
find [paths] [expression] [actions]
find コマンドの他の形式は、find コマンドが実行されるときに指定され、すべてのパスでディレクトリとファイルを探します。指定されたパスでディレクトリが見つかると、同じパスで他のファイルとディレクトリの検索が開始されます。指定したパス内のすべてのファイルを検索するまで、このプロセスは停止しません。
find /where/to/look/up criteria action find /dir/path/look/up criteria action find /dir/path/look/up -name "name-of-dir" find /dir/path/look/up -name "pattern" find /dir/path/look/up -name "name-of-dir" -print find /dir/path/look/up -name "name-of-dir" find / -name "name-of-dir" find / -type d -name "name-of-dir" find / -type d -name "name-of-dir" 2>/dev/null
すべてのディレクトリとファイルを検索しています
指定したパスからすべてのファイルとディレクトリのリストが必要な場合は、パスを指定することで実行できます。たとえば、usr/share パスからすべてのファイルのリストが必要な場合は、次のコマンドを使用できます:
find /usr/share
一度に複数のディレクトリからファイルを一覧表示する場合は、次のコマンドを使用できます。このコマンドを実行すると、指定したパスからすべてのディレクトリとファイルの一覧がコンソールに表示されます。保存されているコンテンツによっては、リストが非常に長くなる場合があります。
find /bin /usr/li
現在の作業に直接存在するコンテンツのリストが必要だとします。次のように、find コマンドの後にピリオド (.) を入力すると、すばやく実行できます。
find .
どういうわけか、find コマンドの後にピリオドを付けるのを忘れた場合でも、find コマンドのみを実行すると、現在の作業ディレクトリからのデータが表示されます。
find
アイテムを名前でフィルタリングする
多くの場合、名前を使用してさまざまなアイテムをフィルタリングする必要があります。 Linux の find directory コマンドもこれを行うのに役立ちます。
/Desktop ディレクトリ内にある NEW.txt という名前のファイルを検索する場合、以下に示すように「-name」スイッチを使用できます:
find Desktop -name NEW.txt
「-name」スイッチを使用すると、大文字と小文字が区別されます。大文字と小文字を区別しないコマンドを使用するには、「-name」の代わりに「-iname」を使用できます
find Desktop -iname new.txt
これらのスイッチはどちらも、不明な文字のプレースホルダーとして使用される「ワイルドカード」をサポートしています。 "*" ワイルドカードは、任意の数の不明な文字を表示するために使用されますが、"?"は 1 つの未知の文字に使用されます。
これらのワイルドカードを使用するには、「name / iname」コマンドのパラメーターを二重引用符または単一引用符で囲む必要があります。
最後に .txt を含む /Desktop ディレクトリ内のすべてのファイルを検索するとします。次に、次の Linux find directory コマンドで実行できます:
find Desktop -name '*.txt'
名前に 3 文字を含むファイルを検索する場合は、「?」を使用できます。引用符で囲まれたワイルドカード。
find Desktop -name '???'
ファイルまたはディレクトリの検索の指定
Linux を使用してディレクトリ コマンドを検索する場合、検索のタイプも指定できます。 「-type」スイッチを使用して、ファイルまたはディレクトリのみを検索するように指定できます。 「-type」スイッチのパラメーターは全部で 3 つあります:
- f - ファイル
- d - ディレクトリ
- l - シンボリック リンク
/usr パスに存在するすべてのディレクトリを見つけたい場合は、次を使用できます。
find /usr -type d
スイッチを組み合わせて使う方法もあります。たとえば、-name スイッチで「.txt」を検索し、同時に「-type」スイッチでファイルの種類を指定するには:
find /usr -type f -name '*.txt'
上記の例と同様に、/usr パスで「d」パラメーターを使用してディレクトリを検索することもできます。 「cherrytree」という名前のディレクトリを検索する場合:
find /usr -type d -name 'cherrytree'
空のファイルを見つけるための空のスイッチ
Linux の find directory コマンド内で「-empty」スイッチを使用できます。このスイッチは、指定したパスに存在する空のファイルまたは空のディレクトリを検索するために使用されます。 /usr ディレクトリ内の空のファイルを見つけるには、「-type」スイッチを使用して次のコマンドを適用できます:
find /usr -type d -empty
検索コマンドでの一致の否定
検索から何かを除外したい場合は、find コマンドを使用して条件を否定できます。
/usr ディレクトリで ".Py" 拡張子のないファイルを検索したいとします。以下に示すように、「-name」スイッチに感嘆符 (!) を含めることができます。
find /usr -type f ! -name '*.py'
感嘆符は、他のスイッチに反対するためにも使用できます。たとえば、「-empty」スイッチの場合、「!」を使用できます。空のディレクトリの代わりに空でないディレクトリを検索します。
find /usr -type f ! -empty
所有権に基づくファイルの検索
ユーザーの所有権に基づいてファイルを検索するオプションがあります。 「-user」スイッチを使用して、特定のユーザーに関連するファイルを検索できます。 「root」という名前のユーザーに関連するファイルを検索する場合は、次のコマンドを適用してすべてのファイルのリストを取得できます。
find / -type f -user root
ユーザー名の代わりに、ユーザー ID を使用して、そのユーザーに属するすべてのファイルを確認することもできます。ユーザー ID がわからない場合は、次のコマンドを使用して見つけることができます。
id -u <username>
グループ名またはグループ ID を使用して、グループごとに検索することもできます。グループ ID を見つけるには、次のコマンドを使用できます。
id -g <username>
サイズに基づくファイルの検索
Linux の find directory コマンドを使用すると、サイズに基づいてファイルを検索することもできます。この目的のために「-size」スイッチが使用され、ディレクトリではなくファイルにのみ適用されます。
数字の後にアルファベットを入力することで、ファイル サイズを指定できます。これらの文字は「-size」スイッチで使用されます。
- c- バイト
- k - キロバイト
- m - メガバイト
- g - ギガバイト
「+」記号と「-」記号を使用して、より小さいまたはより大きい条件を適用することもできます。
サイズが 20KB のすべてのシステム ファイルを検索する例を次に示します。
find / -size 20k
1 GB を超えるファイルを検索する場合は、次を使用できます。
find / -size +1G
サイズが 20MB 未満のファイルが必要な場合は、次のステートメントを使用できます:
find / -size -20M
find directory コマンドによるアクションの実行
これまで使用していたコマンドは、端末に結果を表示するためだけのものでしたが、find コマンドを使用して実行できるアクションがいくつかあります。ファイルのコピーや削除などの必要なアクションも実行できます。
ファイルの削除用
find コマンドで「-delete」を使用するだけで、ファイルやディレクトリを簡単に削除できます。 /Desktop ディレクトリにある空のファイルをすべて削除したい場合は、次のコマンドを使用できます:
find Desktop -type f -empty -delete
コマンドの実行
「-exec」スイッチは、カスタム コマンドを実行するために使用されます。 「-exec」スイッチを使用すると、多くのことができます。
すべてのファイルを一度にコピーするには、次を使用できます:
find ~ -type f -name '*.mp3' -exec cp {} ';'
上記のコマンドでは、「;」を使用しています。引用符で囲まれたコマンドの末尾を表示します。表示されている「{}」(括弧) は、場所を定義するために使用されます。
指定に従って一致するファイルが検出されると、cp コマンドがアクティブになり、その場所からファイルが移動されます。
結論
find コマンドを使用すると、さらに多くのことができます。 Linux CLI (コマンドラインインターフェース) に慣れている人には便利です。 find コマンドには、さまざまなアクションを実行したり、さらに多くのことを行うのに役立つ多くの可能性が詰め込まれています。 Linux の move コマンドと copy コマンドに関するチュートリアルもありますので、そちらをご覧ください。