繁体   English   中英

查找特定文件的文件夹

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM