ディレクトリに名前が含まれている場合、検索は繰り返しを停止します。

ディレクトリに名前が含まれている場合、検索は繰り返しを停止します。

場合によっては、検索を使用すると、私の検索文字列が(偶然であっても意図的に)ディレクトリの一部と一致することがあります。これにより、ディレクトリ内の対応するポイントの下にあるすべてのエントリが印刷されます。たとえば、

$ locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/
/lib/modules/
/lib/firmware/
.... etc

これにより、迅速に制御できなくなり、検索が困難になる可能性があります。

これを防ぐ方法はありますか?たとえば、次のように印刷してみましょう。

$locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/

それはすべてですか?

また、ディレクトリを探して探すようにすることは可能ですか?

たとえば(qemuのデフォルトフォルダを探します)

実際:

$locate qemu
home/myname/qemu
home/myname/qemu/.svn
home/myname/qemu/.svn/.....
home/myname/qemu/Makefile
.....
usr/bin/qemu
.....

期待する:

$locate (option) qemu
/home/myname/qemu
/usr/bin/qemu

答え1

mlocateバージョンのあるシステムでは、locateまたはオプションを使用して一致を制限できます。-b--basename

locate -b lib

...これは、名前に対応する文字列を含むファイルに結果を制限します。私のシステムでは、一致するものははるかに少ないです。

$ locate lib | wc -l
28901
$ locate -b lib | wc -l
3430

答え2

locate絶対パス名のリストを印刷します。あなたはできますいつもパイプ結果grepファイル名のみを取得する

locate lib |grep -E '/lib$'

またはディレクトリ名のみ

locate lib |grep '/lib/' | sed -e 's,/lib/.*$,/lib,' | sort -u

これを頻繁に実行する場合は、各タスクを実行する小さなスクリプトを作成できます(もちろんパラメータ化された「lib」)。

答え3

以下のオプションを使用して項目数を制限できます-l

 locate -w lib -l 1
  • -w正確な単語と一致

  • -l指定された番号を見つけた後、正常に終了します。

-bまたはオプションを使用できます

locate -b '\lib' -l 1
  • -b指定されたパターンを持つデフォルト名のみが一致します。

関連情報