web-dev-qa-db-ja.com

Linuxは与えられた文字列でファイル名を見つける

私はUbuntuを使用しています。名前に文字列「John」が含まれる現在のディレクトリとサブディレクトリ内のすべてのファイルを検索したいと思います。 grepはファイル内のコンテンツと一致することがありますが、ファイル名でそれを使用する方法がわかりません。任意の助けをいただければ幸いです。

97
JJ Beck

find コマンドを使用し、

find . -type f -name "*John*"
179
Rich Adams

正しい答えはすでに提供されていますが、あなたが自分自身を助ける方法を学ぶために、私は別の方法で役立つものを投入すると思いました。 1つのWordで達成しようとしていることを要約できる場合、Linuxには強力なヘルプ機能があります。

man -k <your search term>

それは、簡単な説明に検索語を含むすべてのコマンドをリストすることです。通常、かなりの可能性がありますfind目的を達成します。 ;)

その出力はときどき圧倒される場合があります。次のように、利用可能なすべてのマンページではなく、実行可能ファイルに絞り込むことをお勧めします。

man -k find | egrep '\(1\)'

または、次のようにより高い特権レベルを必要とするコマンドも探したい場合:

man -k find | egrep '\([18]\)'
22
tink

findコマンドは、ファイルシステム内の実際のファイルをスキャンするため、時間がかかります。

最も簡単な方法はlocateコマンドを使用することで、すぐに結果が得られます。

locate "John"

コマンドが見つからない場合は、mlocateパッケージをインストールし、updatedbコマンドを最初に実行して、検索データベースを初めて準備する必要があります。

詳細はこちら: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab

2
thucnguyen

ackを使用するのは簡単です。 ack <string to be searched>と入力するだけです

1
Annu

これは、検索するディレクトリでtreeコマンドを使用する非常に簡単なソリューションです。 -fは完全なファイルパスを示し、|は、ツリーの出力をgrepにパイプして、名前に文字列filenameを含むファイルを見つけるために使用されます。

tree -f | grep filename
1
caylus