web-dev-qa-db-ja.com

ファイル名で複数の単語を(任意の順序で)検索する方法-GUI(またはターミナル)

大文字小文字に関係なく、任意の順序で完全または部分的な単語のファイル名を検索できる検索ツール(Ubuntu 14.04デスクトップから)またはメソッド/コマンド(ターミナル)を探しています。

知ってる?

これが私がしなければならないことの例です。 /home/myusername名前に「個人」、「収入」、「税金」、「州」が含まれるファイルがあります。しかし、ファイル名が

  • state personal income tax return.docまたは
  • personal Income Tax return - state.docまたは
  • income tax return - State - personal.doc

また、単語の一部が大文字になっているかどうかも思い出せません。また、それぞれの単語が含まれている他の膨大な数のファイルがあります。したがって、単語の1つ( "state"のみ、または "tax"のみなど)を単純に検索しても、あまりにも多くのファイルが返されるため、あまり役に立ちません。

理想的には、[所得の州の収益]または[州の所得の収益]を入力して、大文字や単語の順序に関係なく、ファイル名に3つの単語すべてが含まれるファイルを復元できるようにしたいと考えています。 GUIツールが推奨されますが、ターミナルメソッドも問題ありません。

私はCatfishとgnome-search-tool/"Search for Files"を試しました-ファイル名での出現順に用語が入力されていない限り、どちらも複数の検索用語で機能しないようです。検索語の間。

1
gj7755

grepは使用しないでください! findには、完全に一致する構文のファイル名マッチングがあります。あなたの例を使用するには:

find [PATH...] -iname '*personal*' -iname '*income*' -iname '*tax*'

どこ [PATH...]は、検索する0個以上のパスです。

mlocateファイル名データベースを無効にしていない場合は、検索を高速化するためにそれを利用する方が速い場合があります。残念ながら、これは複数の結合検索語をサポートしていないため、grepも必要です。

locate -ib income | grep -i personal | grep -i tax

とにかく検索結果を見ることになるので、スーパーセットを検索する方がよい場合があります(メモリが十分に機能しない場合)。

locate -ib income
3
David Foerster

grepは、ファイル名で検索する単語と同じ数だけ使用できます。たとえば、「収入」、「税金」、「個人」、「州」という単語を含むファイル名を見つけるには、次のようにします。

ls -R /home/myusername/ | grep -i "income"  | grep -i "tax" | grep -i "personal" | grep -i "state"

ここで-iスイッチは大文字と小文字を区別しません。

注:

findは、この種のシナリオに適しています。詳細は this answer および this answer を確認してください。

1
heemayl

私が通常行うことは、ホームディレクトリfind . | grep 'SEARCHTERM1\|SEARCHTERM2'

0
Ruediger