如何获得符号链接的名称?

时间:2016-04-06 07:40:05

标签: sed symlink cut

命令的输出看起来像这样

# ls -l abc.zip
lrwxrwxrwx 1 sri dba 122 Mar 27 23:37 /a/b/c/abc.zip -> /x/y/z/abc.zip

我需要提取/剪切->之后的整个路径。我使用过cut -f -d但是有些时候没用,我猜列号正在改变。所以我需要sed相当于此。

3 个答案:

答案 0 :(得分:1)

这可能适合你(GNU sed):

sed -n 's/^l.*->\s*//p' file

答案 1 :(得分:1)

您正在阅读的是有关符号链接的信息。 Parsing ls is definitely a bad idea

使用readlink怎么样?它读取符号链接的值

readlink abc.zip

-f代表完整路径:

readlink -f abc.zip

查看示例:

$ touch a         
$ ln -s a b          # we create a symbolic link "b" to the file "a"
$ ls -l b
lrwxrwxrwx 1 me me 1 Apr  6 09:54 b -> a
$ readlink -f "b"    # we check the full "destination" of the symlink "b"
/home/me/a
$ readlink "b"       # we check the "destination" of the symlink "b"
a

答案 2 :(得分:0)

使用' cut'你只能指定单个字符分隔符。

对于字符串分隔符,一个简单明了的选项是awk。在你的情况下尝试:

ls -ls abc.zip | awk -F '->' '{print $2}'