場合によっては、検索を使用すると、私の検索文字列が(偶然であっても意図的に)ディレクトリの一部と一致することがあります。これにより、ディレクトリ内の対応するポイントの下にあるすべてのエントリが印刷されます。たとえば、
$ 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
指定されたパターンを持つデフォルト名のみが一致します。