2016-04-06 78 views
0

輸出看起來像這樣如何獲取符號鏈接的名稱?一個命令的

# 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相當於此。

回答

0

使用 '切割' 你只能指定單個字符分隔符。

對於字符串分隔符,一個簡單明瞭的選項是awk。在你的情況下嘗試:

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

這可能爲你工作(GNU SED):

sed -n 's/^l.*->\s*//p' file 
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 
相關問題