Locate
當目錄包含名稱時定位停止重複
有時在使用定位時,我的搜尋字元串會(偶然或有意地)匹配目錄的一部分。這會導致列印目錄中該點以下的所有內容。例如:
$ locate lib /home/myname/libImWorkingOn/libImWorkingOn.so /lib/ /lib/modules/ /lib/firmware/ .... etc
這很快就會失控,並且很難搜尋。
有沒有辦法防止這種情況?例如,讓它列印:
$locate lib /home/myname/libImWorkingOn/libImWorkingOn.so /lib/
僅此而已?
此外,是否可以查找目錄並讓 locate 只提取目錄?
例如(尋找 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
在
mlocate
版本為 的系統上,您可以使用or選項locate
限制匹配:-b``--basename
locate -b lib
…這會將結果限制為名稱包含字元串的文件。在我的系統上,這會導致更少的匹配:
$ locate lib | wc -l 28901 $ locate -b lib | wc -l 3430
**
locate
列印絕對路徑名列表。您始終可以通過管道獲取結果grep
**以獲取文件名locate lib |grep -E '/lib$'
或者只是目錄名稱
locate lib |grep '/lib/' | sed -e 's,/lib/.*$,/lib,' | sort -u
如果您經常這樣做,您可以編寫一個小腳本來完成其中的每一個(當然,參數化“lib”)。