web-dev-qa-db-ja.com

3項目のテキストを含むファイル/フォルダーの検索

私はUbuntu 14.04を実行していますが、現在、次のコマンドを使用して「hello」、「165」、「920」を含むファイルとフォルダを検索しようとしています。

    find . -name "hello 165 920" > /search/results/here/search20170224.txt

Nemo( "hello 165 920")でこのような文字列を検索すると、得られた結果は私が目指しているものです。ファイルまたはフォルダーに「hello 165 920」という単語が含まれている場合(任意の順序または他のテキストの中で)、結果が表示されます。

例:helloxx165xx920、hello_165-920、hello165920

したがって、私がやりたいことは間違いなく可能ですが、CLIのfindコマンドを使用して、完全に一致する結果のみを取得しています。

Findコマンドを使用してこの種の検索を実行する方法を見つけることはできません。これらの検索を約500回順番に実行する必要があります。そのため、CLIのアプローチが必要なので、各検索を手動でセットアップする必要がなくなり、検索のサイズと深さが原因で5分ごとにNemoがクラッシュすることになりません。

誰でもできる助けは大歓迎です=]

5
Pete Duggan

ワイルドカード(fooの代わりに*foo*)、複数の-nameテストを使用し、-andと組み合わせる必要があります。

find . -name "*hello*" -and -name '*165*' -and -name "*920*" > search20170224.txt

検索する文字列が多数ある場合は、各文字列が(スペースで区切られた)列であるファイルに保存できます。

hello 165 920
goodbye 321 123

その後、ファイルを反復処理して、findクエリを作成できます。

while read a b c; do
    find . -name "*$a*" -and -name "*$b*" -and -name "*$c*" > search."$a"_"$b"_"$c".txt
done
11
terdon