我locate
多次使用二进制在 1TB HDD 上搜索某些内容。
大多数时候,我得到了很多结果,我必须阅读每一行才能得到我正在寻找的东西。
locate
如果能输出带有颜色的匹配模式就太好了(就像 grep --color 一样)
有什么办法可以做到这一点吗locate
?
答案1
最简单的方法就是写一个简单的外壳脚本结合了locate
和grep
:
在 $PATH 中的某个位置(例如/usr/local/bin/clocate
)创建一个文件
#!/bin/sh
locate --regex "$1" | grep --color=auto "$1"
然后使其可执行,例如
chmod +x /usr/local/bin/clocate
并像使用它一样locate
。该脚本只接受一种模式。
另一种方法是使用外壳函数:如果您使用bash
外壳程序,则可以添加$HOME/.bashrc
以下行:
clocate() { locate --regex "$1" | grep --color=auto "$1"; }
您需要重新运行 bash 或重新获取源代码,.bashrc
然后才能使用新命令。
请注意--regex
的选项locate
。您需要编写.*
而不是*
匹配任意数量的字符。
答案2
这适用于两种模式 第一个模式在命令行中,第二个模式在邀请时。
#!/bin/sh
echo "Type the second argument."
read constraint
locate -i "$1" | grep -i $(echo "$constraint") |grep -i --color=auto -e $(echo "$1") -e $(echo "$constraint")
exit