在Linux Mint的目录/ usr / lib中,有一些文件,其中包括xxx.so.d的名称,其中xxx是它们的名字,d是一个数字。分配是查找.so文件结尾的所有文件,并写出其名称xxx。我到目前为止的代码是
ls | grep "\.so\." | cut -d "." -f 1
现在的问题是削减一些文件名很短,例如有一个名为libgimp-2.0.so.0的文件,其中想要的输出是libgimp-2.0,因为那部分是.so的前面 无论如何都要在#34; .so"而不是第一个。?
答案 0 :(得分:1)
for i in *.so*; do echo "${i%.so*}"; done
只是一个bash参数替换 http://www.tldp.org/LDP/abs/html/parameter-substitution.html
答案 1 :(得分:1)
pacholik给出的答案可能会给你错误的文件(即:'xyz.socket'会出现在你的列表中)。纠正他的剧本:
for i in *.so.*; do echo "${i%%.so*}"; done
另一种方法(在我看来更容易阅读)是使用一点Perl:
ls | grep "\.so\." | perl -n0e "print ((split(/\.so/))[0], \"\n\")"
对不起,我认为没有办法像你问的那样只使用“剪切”。
答案 2 :(得分:0)
请改用sed:
ls | grep -v ".socket" | grep .so | sed "s/.so.*//"
这将删除文件名中第一个找到的.so
后面的所有内容。所以名为xxx.so.so
的文件也可以使用。
答案 3 :(得分:0)