所以我有一点:
systemctl list-unit-files | grep --ignore-case networkmanager | grep --ignore-case service | cut --fields=1 --delimiter=" "
作为输出给出:
NetworkManager-dispatcher.service
NetworkManager-wait-online.service
NetworkManager.service
我有一点:
find / -name NetworkManager-dispatcher.service 2>/dev/null
具有以下输出:
/usr/lib/systemd/system/NetworkManager-dispatcher.service
然而,
find / -name $(systemctl list-unit-files | grep --ignore-case networkmanager | grep --ignore-case service | cut --fields=1 --delimiter=" ") -print 2>/dev/null
什么都不给,而:
locate $(systemctl list-unit-files | grep --ignore-case networkmanager | grep --ignore-case service | cut --fields=1 --delimiter=" ")
显示:
/etc/systemd/system/multi-user.target.wants/NetworkManager.service
/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
/usr/lib/systemd/system/NetworkManager-dispatcher.service
/usr/lib/systemd/system/NetworkManager-wait-online.service
/usr/lib/systemd/system/NetworkManager.service
/usr/lib/systemd/system/NetworkManager.service.d
/usr/lib/systemd/system/NetworkManager.service.d/NetworkManager-ovs.conf
为什么哦为什么 find
什么都找不到??? ;-)
在你问“那你为什么不使用定位?”之前 ,答案是:我在 Manjaro,locate
不是标准的,而find
...
放下
2>/dev/null
并查看错误。这将是:-name
只需要一个参数,你提供三个。第一个被接受。第二个不被识别为表达式的有效部分,因此find
假设它是一条路径,(就像/
您提供的那样);但是“路径必须先于表达式”。调用在语法上是错误的,它只是失败了,而不是“没有找到任何东西”。
另一方面,
locate
可以轻松地采用多个模式。这并不意味着它完美无瑕。未引用通常$()
是错误的。在这里您希望输出被拆分,仍然可能会出现其他问题。