我有以下命令:
locate -br '^test.sh$'
输出为:
/home/cas/scripts/test.sh
我想要没有文件名的路径。所以我做了以下操作从输出中删除 test.sh:
locate -br '^test.sh$' | grep -v test.sh
我期望输出是:
/home/cas/scripts/
但相反,我没有得到任何输出。当我按下回车键时,我没有得到任何输出,它只是等待下一个命令。见下图
什么都没有输出。我甚至尝试反转 grep 一些不同的东西,'cas',但它不会给出任何输出。它看起来grep -v
就是不起作用。但普通 grep(所以没有反转)确实有效。为什么它不起作用?或者有没有更好的方法可以从任何地方找到文件的路径,但不在输出中包含文件名(目标是获取/home/cas/scripts/
)?
答案1
实际上grep -v PATTERN
返回所有不包含的行PATTERN
,这就是它给你一个空输出的原因。
以下内容可能对你有用:
locate -br '^test.sh$' | xargs dirname