[英]Find folder of specific file
我正在尝试找到特定文件的文件夹位置,例如libgfortran.so
。
到目前为止,我尝试过的是:
find 2>/dev/null / -name libgfortran.so
...这将向stdout
以下内容(将stderr
重定向到/dev/null
):
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.so
从这里,我只想提取文件夹(不带尾部/
):
/usr/lib/gcc/x86_64-linux-gnu/4.8
我已经尝试了类似的东西:
find 2>/dev/null / -name libgfortran.so | sed 's/\(\/.*\/\)/\1/'
...我希望捕获第一个和最后一个/
之间的内容(然后我需要删除last /
),但是我得到的输出仍然是:
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.so
我如何实现自己想要的?
find / -name libgfortran.so -exec dirname {} \; 2> /dev/null
就像是:
dirname `find 2>/dev/null / -name libgfortran.so`
应该管用。
如果您真的想使用sed
:
find 2>/dev/null / -name libgfortran.so | sed -E 's#(/.*)/(.*)#\1#g'
-E
告诉sed使用正则表达式,因此您不必转义这些反义词。 组\\1
是您的路径,而\\2
是文件名。
您可以使用grep以更简单的方式实现此目的:
find 2>/dev/null / -name libgfortran.so | grep -o '\/.*\/'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.