コマンドを使用してlocate
、指定されたパターンに完全に一致するものを検索しようとしています。ただし、一致するすべてのファイルが表示されます。
たとえば、次の名前のバイナリを見つけたいとします:ノード
しかし、次の単語を含むすべての一致が表示されます:
server2# locate node
/usr/share/man/man9/getnewvnode.9.gz
/usr/share/man/man9/ieee80211_amrr_node_init.9.gz
/usr/share/man/man9/ieee80211_dump_node.9.gz
/usr/share/man/man9/ieee80211_dump_nodes.9.gz
/usr/share/man/man9/ieee80211_find_rxnode.9.gz
/usr/share/man/man9/ieee80211_find_rxnode_withkey.9.gz
/usr/share/man/man9/ieee80211_free_node.9.gz
答え1
を見るとlocate --help
、次のようなことがわかります。
-r, --regexp REGEXP search for basic regexp REGEXP instead of patterns
--regex patterns are extended regexps
-r
正規表現パターンを提供するには、次のものを使用できますlocate
。
locate -r /node$
ファイル名の先頭にensuresがあります。ファイル/
名の末尾にensuresがあります。これにより、node
$
node
のみファイル名と完全に一致するファイル。
Node
大文字と小文字を区別しない検索( 、、NODE
などに一致nOdE
)を行う場合は、以下を追加します-i
。
locate -i -r /node$
find が正規表現をサポートしていない場合は、grep を使用できます (Iracicot で説明されているように)。
locate node | grep /node$
locate -i node | grep -i /node$
答え2
grepをlocateと一緒に使うこともできます
server2# locate node | grep node$
$ 記号は、grep に文字列の末尾を参照するように指示します。
答え3
locate
すべてのディレクトリに一致する独自の glob を追加して、 の暗黙的な glob を無効にします。
locate */node
man ページから:
グロブ文字が含まれていない場合
PATTERN
、locateはパターンが*PATTERN*
この構文は、ルートを含む任意の場所の完全なファイル名またはディレクトリ名に一致します。