查找但排除名称 - Linux

查找但排除名称 - Linux

hosts我正在尝试远程查找 Linux PC 上指定的所有文件。问题是有几乎几千个文件作为ghostscript上层目录名称之一或作为目录名称的一部分,因此它返回所有这些目录。有没有办法定位hosts但排除ghosts

答案1

您可以将输出传输到 grep -v 命令中以排除 Ghostscript

| grep -v "ghostscript"

答案2

当你locate hosts这样做时,就像你做了一样locate '*hosts*'(哪里*也可以 match /),这就是为什么你匹配得更多。您需要显式提供至少一个全局字符来覆盖这一点,因此请使用

locate '*/hosts'

如果您想要任何hosts结尾带有 的文件,请使用*hosts.如果您想要任何中间包含主机的文件,这取决于您的locate 版本。作为钢铁起子请注意,mlocate 需要-b将模式仅应用于基本名称,因此您可以执行以下操作

locate -b '*hosts*'

通过 GNU 定位,您可以使用正则表达式

locate -r '[^/]*hosts[^/]*$'

答案3

使用

find /path/to/directory/ -type f -name "hosts" -not -path "*ghostscript*"

相关内容