輸出看起來像這樣如何獲取符號鏈接的名稱?一個命令的
# 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
相當於此。
輸出看起來像這樣如何獲取符號鏈接的名稱?一個命令的
# 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
相當於此。
使用 '切割' 你只能指定單個字符分隔符。
對於字符串分隔符,一個簡單明瞭的選項是awk。在你的情況下嘗試:
ls -ls abc.zip | awk -F '->' '{print $2}'
這可能爲你工作(GNU SED):
sed -n 's/^l.*->\s*//p' file
你正在閱讀的是有關符號鏈接的信息。 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