Linux でワイルドカードを使用して現在のディレクトリとサブディレクトリ内のファイルを再帰的に検索する

Shell

Linux での効率的なファイル検索

Linux を使用する場合、ディレクトリ間でファイルを検索するのは一般的であり、場合によっては複雑なタスクになることがあります。再帰的検索方法とワイルドカード マッチングを利用すると、このプロセスを大幅に効率化できます。これらのツールは初心者と上級ユーザーの両方にとって非常に貴重であり、ファイル管理をより効率的にします。

このガイドでは、特定のワイルドカード パターンに基づいて、現在のディレクトリとそのサブディレクトリ内のすべてのファイルを再帰的に検索する方法を説明します。大規模なデータセットを整理している場合でも、単にいくつかのファイルを見つけようとしている場合でも、これらの方法を使用するとコマンド ラインの習熟度が向上します。

指示 説明
find ディレクトリ階層内のファイルとディレクトリを検索します。
-name ワイルドカード パターンを使用してファイル名を照合します。
os.walk トップダウンまたはボトムアップのいずれかでディレクトリ ツリー内にファイル名を生成します。
fnmatch.fnmatch ファイル名または文字列がワイルドカード パターンに一致するかどうかをテストします
param PowerShell スクリプトと関数のパラメーターを定義します
Get-ChildItem 1 つ以上の指定された場所にあるアイテムを取得します
-Recurse ディレクトリを再帰的に検索するようにコマンドに指示します。
-Filter ワイルドカード式を使用して項目をフィルタリングします

再帰的ファイル検索スクリプトの詳細説明

最初のスクリプトは、シェル スクリプトを利用して、指定されたワイルドカード パターンに基づいて現在のディレクトリとそのサブディレクトリ内のファイルを検索します。これは、スクリプトのインタープリタを指定する shebang で始まります。次にスクリプトは、if [ $# -eq 0 ] を使用して、ユーザーが引数としてワイルドカード パターンを指定したかどうかを確認します。そうでない場合は、ユーザーに正しい使用方法を求めるメッセージが表示され、終了します。パターンが指定されている場合、スクリプトは find コマンドを -type f オプションとともに使用してファイルを検索し、-name オプションを使用してワイルドカード パターンと一致します。 find コマンドは、Unix ベースのシステムでファイルを再帰的に検索する場合に非常に効率的です。スクリプトは exit 0 で終了し、実行が成功したことを示します。

2 番目のスクリプトは Python スクリプト で、これもワイルドカード パターンに基づいて再帰的にファイルを検索します。まず、os モジュールと sys モジュールをインポートします。これらは、オペレーティング システムと対話し、コマンドライン引数を処理するために必要です。スクリプトは、ユーザーがワイルドカード パターンを指定したかどうかを確認します。そうでない場合は、正しい使用法を出力して終了します。 os.walk を使用すると、スクリプトがディレクトリ ツリーを横断できるようになります。見つかったファイルごとに、fnmatch.fnmatch はファイル名がワイルドカード パターンと一致するかどうかを確認し、一致するファイル パスを出力します。このスクリプトは、スクリプト作成に Python を好み、コードの柔軟性と読みやすさを必要とするユーザーに役立ちます。

3 番目のスクリプトは PowerShell を使用して、Windows システム上で同様のタスクを実行します。このスクリプトは param ステートメントを使用して、ワイルドカード パターンのパラメーターを定義します。パターンが提供されていない場合は、ユーザーに正しい使用方法を求めるメッセージが表示されます。 Get-ChildItem コマンドレットを -Recurse フラグと組み合わせると、指定された場所にある項目が再帰的に取得されます。 -Filter パラメーターは、特定のファイルに一致するワイルドカード パターンを適用します。このスクリプトは、PowerShell の強力で汎用性の高いスクリプト機能を活用して、ファイルを効率的に管理および検索する、Windows 環境で作業するユーザーに最適です。

Find コマンドを使用した再帰的ファイル検索

Linux でのシェル スクリプト

#!/bin/bash
# Script to recursively find files based on wildcard matching

# Check if the user has provided a wildcard pattern
if [ $# -eq 0 ]
then
  echo "Usage: $0 <wildcard-pattern>"
  exit 1
fi

# Find and print the files matching the pattern
find . -type f -name "$1"

exit 0

再帰的ファイル検索用の Python スクリプト

Python スクリプト

import os
import sys

# Check if the user has provided a wildcard pattern
if len(sys.argv) != 2:
    print("Usage: python script.py <wildcard-pattern>")
    sys.exit(1)

# Get the wildcard pattern from the command line argument
pattern = sys.argv[1]

# Walk through the directory tree
for root, dirs, files in os.walk("."):
    for file in files:
        if fnmatch.fnmatch(file, pattern):
            print(os.path.join(root, file))

再帰的ファイル検索用の PowerShell スクリプト

PowerShell スクリプト

# Check if the user has provided a wildcard pattern
param (
    [string]$pattern
)

if (-not $pattern) {
    Write-Host "Usage: .\script.ps1 -pattern '<wildcard-pattern>'"
    exit 1
}

# Get the files matching the pattern
Get-ChildItem -Recurse -File -Filter $pattern

再帰的ファイル検索のための高度なテクニック

前に説明した基本的な再帰的ファイル検索方法に加えて、Linux でのファイル検索機能を強化できる高度なテクニックがいくつかあります。そのような方法の 1 つは、grep コマンドを find と組み合わせて使用​​し、特定のテキスト パターンを含むファイルを検索することです。たとえば、 find を使用できます。 -type f -name "*.txt" -exec grep "search_text" {} + 文字列「search_text」を含むすべてのテキスト ファイルを検索します。これは、大規模なコードベースやログ ファイルを効率的に検索する必要がある開発者やシステム管理者にとって特に便利です。

再帰的ファイル検索のためのもう 1 つの強力なツールは fd です。これは、find に代わる、シンプルで高速かつユーザーフレンドリーなツールです。 fd には適切なデフォルトが付属しており、直感的な構文を提供します。たとえば、コマンド fd "pattern" はパターンに一致するファイルを再帰的に検索し、デフォルトで正規表現をサポートします。さらに、fd は、並列化されたファイル システムの走査により、多くのシナリオで find よりも高速です。ユーザーフレンドリーなインターフェースを備えた高度な検索機能を必要とするユーザーにとって、fd は優れた選択肢となります。

  1. 特定の拡張子を持つファイルを再帰的に検索するにはどうすればよいですか?
  2. コマンド find を使用します。 -type f -name "*.extension" ここで、「extension」は探しているファイル拡張子です。
  3. 過去 7 日以内に変更されたファイルを検索できますか?
  4. はい、find コマンドを使用してください。 -type f -mtime -7 と入力すると、過去 7 日間に変更されたファイルが検索されます。
  5. 特定のディレクトリを検索から除外するにはどうすればよいですか?
  6. find で -prune オプションを使用して、ディレクトリを除外します (例: find )。 -path "./exclude_dir" -prune -o -type f -name "*.txt" -print。
  7. ファイルをサイズで検索することはできますか?
  8. はい、 find を使用してください。 -type f -size +100M 100MB を超えるファイルを検索します。
  9. 正規表現に一致する名前を持つファイルを検索するにはどうすればよいですか?
  10. find を使用します。 -type f -regex ".*pattern.*" は、正規表現に一致する名前を持つファイルを検索します。
  11. 複数の検索条件を組み合わせることはできますか?
  12. はい、 find オプション (例: find ) を使用して条件を組み合わせることができます。 -type f -name "*.txt" -size +10M。
  13. 隠しファイルを再帰的に検索するにはどうすればよいですか?
  14. find を使用します。 -type f -name ".*" 隠しファイルを検索します。
  15. ディレクトリのみを一覧表示する方法はありますか?
  16. はい、 find を使用してください。 -type d とすべてのディレクトリを再帰的にリストします。
  17. 見つかったファイルの数をカウントするにはどうすればよいですか?
  18. を追加| wc -l を find コマンドに追加します (例: find )。 -type f -name "*.txt" |トイレ -l。
  19. 検索の深さを制限できますか?
  20. はい、 -max Depth オプション (例: find ) を使用します。 -max Depth 2 - f と入力すると、検索の深さが 2 レベルに制限されます。

再帰的ファイル検索のための高度なテクニック

前に説明した基本的な再帰的ファイル検索方法に加えて、Linux でのファイル検索機能を強化できる高度なテクニックがいくつかあります。そのような方法の 1 つは、 と組み合わせたコマンド 特定のテキスト パターンを含むファイルを検索します。たとえば、次のように使用できます 文字列「search_text」を含むすべてのテキスト ファイルを検索します。これは、大規模なコードベースやログ ファイルを効率的に検索する必要がある開発者やシステム管理者にとって特に便利です。

再帰的なファイル検索のためのもう 1 つの強力なツールは次のとおりです。 、シンプル、高速、そしてユーザーフレンドリーな代替手段 。 には賢明なデフォルトが付属しており、直感的な構文を提供します。たとえば、次のコマンドは fd "pattern" パターンに一致するファイルを再帰的に検索し、デフォルトで正規表現をサポートします。さらに、 よりも速いです 並列化されたファイル システムのトラバーサルにより、多くのシナリオで使用されます。ユーザーフレンドリーなインターフェースを備えた高度な検索機能を必要とするユーザーのために、 素晴らしい選択になる可能性があります。

再帰的ファイル検索に関する最終的な考え

Linux での再帰的ファイル検索をマスターすることは、特に複雑なディレクトリ構造の場合、効率的なファイル管理にとって非常に重要です。のようなツールを活用することで、 、 、および次のような代替案 、ユーザーは生産性を大幅に向上させることができます。これらのコマンドを理解して利用すると、時間を節約し、初心者と経験豊富なユーザーの両方のタスクを簡素化し、ファイルの検索を簡単なプロセスにすることができます。