ワイルドカードの一致に基づいて、現在およびサブフォルダー内のすべてのファイルを再帰的に見つける方法はありますか。
Grepへのfindのパイピングはしばしばより便利です。それはあなたに任意のワイルドカードマッチングのための正規表現のフルパワーを与えます。
たとえば、ファイル名に大文字と小文字を区別しない文字列 "foo"を含むすべてのファイルを検索するには、次のように入力します。
~$ find . -print | grep -i foo
find
はパターンにマッチするすべてのファイルを見つけます。
find . -name "*foo"
しかし、あなたが写真が欲しいならば:
tree -P "*foo"
お役に立てれば!
あなたのシェルが 新しいグロビングオプション をサポートしている場合:/(shopt -s globstar
で有効にすることができます)、あなたは以下を使うことができます。
echo **/*foo*
再帰的にファイルやフォルダを見つけること。これはBash 4、zsh、および類似のシェルでサポートされています。
個人的に私はこのシェル関数を定義しました:
f() { find . -name "*$1*"; }
注:上の行はシェルに直接貼り付けることも、ユーザーの~/.bashrc
ファイルに追加することもできます。
それから私はタイプすることによってどんなファイルでも探すことができます:
f some_name
あるいは、 fd
ユーティリティ を単純な構文で使うことができます。 fd pattern
。
find -L . -name "foo*"
場合によっては、シンボリックディレクトリリンクを処理するために-Lパラメータが必要です。デフォルトでは、シンボリックリンクは無視されます。そのような場合は、ディレクトリをサブディレクトリに変更してファイルがパターンに一致するのを確認しても、findがファイル名を返さないため、混乱します。 -Lを使用するとその問題は解決します。 findのシンボリックリンクオプションは-P -L -Hです。
find <directory_path> -type f -name "<wildcard-match>"
ワイルドカードマッチでは、マッチしたい文字列を指定することができます。 * .c(すべてのcファイル用)
fd
find
が遅すぎる場合は、fd
ユーティリティを試してください。これは、Rustで書かれたfind
に代わる単純で高速な方法です。
構文:
fd PATTERN
デモ:
ホームページ: https://github.com/sharkdp/fd
あなたが使用することができます:
# find . -type f -name 'text_for_search'
REGEXを使いたい場合は-iname
を使ってください。
# find . -type f -iname 'text_for_search'
再帰的なファイルを検索するデフォルトの方法で、ほとんどの場合に利用可能です
find . -name "filepattern"
現在のディレクトリ内から、ファイル名またはパターンの再帰的な走査を開始します。 findコマンドを使用すると、ワイルドカードとさまざまなスイッチを使用して、オプションの完全なリストを表示できます。
man find
または、システムでマニュアルページが利用できない場合
find --help
ただし、ファイルシステム全体を走査し、ファイルのインデックスを作成する、よりモダンで高速なツールがあります。そのような一般的なツールの1つは、locateまたはslocate/mlocateです。OSのマニュアルでインストール方法を確認してください。インストールされた場合、データベースを開始する必要があります。インストールスクリプトが実行しない場合は、次のように入力して手動で実行できます。
Sudo updatedb
そして、特定のファイルタイプを探すためにそれを使用するには
locate filename
または、現在のディレクトリ内からファイル名またはパターンを検索するには、次のように入力します。
pwd | xargs -n 1 -I {} locate "filepattern"
ファイルのデータベースを調べ、入力したパターンに一致するパス名をすばやく出力します。 Locateのオプションの完全なリストを表示するには、locate --help
またはman locate
と入力します
さらに、cronジョブを介してスケジュールされた時間にデータベースを更新するようにロケートを構成できるため、午前1時にdbを更新するサンプルcronは次のようになります。
0 1 * * * updatedb
Updatedbはファイルシステム全体を走査するためにroot権限を必要とするため、これらのcronジョブはrootで設定する必要があります。
ファイル検索用find / -xdev -name settings.xml
- >コンピュータ全体find ./ -xdev -name settings.xml
- >現在のディレクトリとそのサブディレクトリ
拡張子タイプのファイル用
find . -type f -name "*.iso"
以下のコマンドはどんなファイルでも検索するのに役立ちます
1)事件に関係なく
2)結果許可なくフォルダを除外した場合
3)ルートから、または好みのパスから検索します。 /を好みのパスに変更してください。
構文:
find -iname '' 2>&1 | grep -v "パーミッションが拒否されました"
例
検索/名前 'C * .xml' 2>&1 | grep -v "パーミッションが拒否されました"
find / -iname '*C*.xml' 2>&1 | grep -v "Permission denied"
次のコマンドは、現在のフォルダとそのサブフォルダにある、正確な名前「パターン」を持つすべてのファイルを一覧表示します。
find ./ -name "pattern"
これは現在のディレクトリとサブディレクトリにあるすべての関連ファイルを検索し、行数を別々に計算します。
find . -name "*.wanted" | xargs wc -l
ワイルドカードを使って特殊ファイルを検索したい場合は、次のコードを使用できます。
find . -type f -name "*.conf"
ここからすべての.confファイルを検索したいとします。
.
はここから検索を開始することを意味します(現在の場所)-type
は、ここではファイル(f)である検索項目のタイプを意味します。-name
は、 * .conf の名前でファイルを検索したいという意味です。