web-dev-qa-db-ja.com

1行のコードを使用して、ファイル名(find)とファイル(grep)の両方を検索する方法は?

私は過去にこれをやったことがあると確信しています(そして答えはどこかにあります)が、今は思い出せません。

filenamefileの両方で一致を検索する(および返す/エコーする)one-linerを探しています。


おそらく最も簡単なのは、grepfindを別々に実行することです。しかし、私はワンライナーを好む...

...これらのツールを連続して実行することが可能であった場合を除きセミコロン(?)またはその他を使用します。


私が求めている解決策はパイピングを伴うとは思わない|なぜなら、set theoryから借りるために、私はunionに興味がある 2つのセットAおよびB(A∪B)、それらのではなく交差点(A∩B)。

3

そのとおりです-セミコロンを使用して、コマンドのリストを順番に実行できます。

$ find . -name 'test'; grep test *

単一のコマンドとして実行するようにグループ化することもできます: http://www.gnu.org/software/bash/manual/html_node/Command-Grouping.html

2
Nykakin

あなたの端末でこれを試してください(CTRL+ALT+T

find <here your starting string > -type f -exec grep -l <here place the part of file name> {} \;

上記のコマンドの説明:

find snow -type f-> snowから始まるすべてのファイルを検索します。 find .... -exec->見つかった各アイテムに対して、次のコマンドを実行します。コマンドでファイル名を通常配置する場所に、{}を入れます。 grep -l "String" something->は、文字列「String」が何かファイルに見つかった場合にファイル名を返します。

クレジット: dbasupport.com

1
rɑːdʒɑ