![find 不起作用,locate 起作用](https://linux22.com/image/168092/find%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%8Clocate%20%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
所以我有这一点:
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
……
答案1
为什么哦为什么没有
find
发现任何东西???
放下2>/dev/null
并查看错误。这将是:
find: paths must precede expression: NetworkManager-wait-online.service
-name
只需要一个参数,而您提供了三个。第一个被接受。第二个不被识别为表达式的有效部分,因此find
假设它是一条路径(就像/
您提供的那样);但“路径必须先于表达式”。
调用在语法上是错误的,它只是失败而不是“什么也没找到”。
另一方面locate
可以轻松地采用多个模式。这并不意味着它是完美无缺的。未加引号$()
的是经常出错。这里你想要分割输出,但仍然可能会出现其他问题。