BigRedEO Asked: 2019-07-27 05:53:53 +0800 CST2019-07-27 05:53:53 +0800 CST 2019-07-27 05:53:53 +0800 CST 查找但排除名称 - Linux 772 我正在尝试hosts远程定位 linux PC 上命名的所有文件。问题是几乎有几千个文件ghostscript作为上层目录名称之一或作为目录名称的一部分,因此它返回所有这些目录。有没有办法定位hosts,但排除ghosts? linux locate 3 个回答 Voted Best Answer john doe 2019-07-27T06:00:07+08:002019-07-27T06:00:07+08:00 您可以将输出通过管道传输到 grep -v 命令以排除 ghostscript | grep -v "ghostscript" meuh 2019-07-27T06:11:23+08:002019-07-27T06:11:23+08:00 当你这样做locate hosts时,就好像你做了locate '*hosts*'( where*也可以 match /),这就是为什么你匹配得更多。您需要明确提供至少一个全局字符来覆盖它,所以使用 locate '*/hosts' 如果您想要任何文件hosts结尾,请使用*hosts. 如果您想要任何中间有主机的文件,这取决于您的定位版本。正如steeldriver指出的那样, mlocate 需要-b将模式应用于基本名称,所以你可以这样做 locate -b '*hosts*' 并且使用 GNU 定位,您可以使用正则表达式 locate -r '[^/]*hosts[^/]*$' Bart 2019-07-27T05:57:30+08:002019-07-27T05:57:30+08:00 利用 find /path/to/directory/ -type f -name "hosts" -not -path "*ghostscript*"
您可以将输出通过管道传输到 grep -v 命令以排除 ghostscript
当你这样做
locate hosts
时,就好像你做了locate '*hosts*'
( where*
也可以 match/
),这就是为什么你匹配得更多。您需要明确提供至少一个全局字符来覆盖它,所以使用如果您想要任何文件
hosts
结尾,请使用*hosts
. 如果您想要任何中间有主机的文件,这取决于您的定位版本。正如steeldriver指出的那样, mlocate 需要-b
将模式应用于基本名称,所以你可以这样做并且使用 GNU 定位,您可以使用正则表达式
利用