Chinaunix

标题: 请教下下面的信息如何匹配获取的?多谢了 [打印本页]

作者: jiangling_0103    时间: 2015-12-01 21:16
标题: 请教下下面的信息如何匹配获取的?多谢了
想请教下大家,ls 命令列出的目录结构如下的,其中目录间做了相关的link,如: lastSuccessfulBuild -> 59  , 59 -> 2015-12-01_21-07-03

我现在通过 readlink -f lastSuccessfulBuild 可以找到最终的目录 2015-12-01_21-07-03 , 但是如何获取中间的目录名,如 59 的?



$ ls -l

total 64
drwxr-xr-x 2 builder gitgroup 4096 Nov 28 12:00 2015-11-25_21-53-33
drwxr-xr-x 2 builder gitgroup 4096 Nov 27 21:33 2015-11-27_21-33-16
drwxr-xr-x 2 builder gitgroup 4096 Nov 28 12:06 2015-11-28_11-58-24
drwxr-xr-x 3 builder gitgroup 4096 Dec  1 12:00 2015-11-28_15-33-32
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 12:00 2015-12-01_11-28-56
drwxr-xr-x 3 builder gitgroup 4096 Dec  1 20:25 2015-12-01_17-35-30
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 20:42 2015-12-01_20-42-20
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 20:46 2015-12-01_20-46-33
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 20:49 2015-12-01_20-49-45
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 20:51 2015-12-01_20-51-41
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 20:54 2015-12-01_20-54-57
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 20:57 2015-12-01_20-57-03
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 20:59 2015-12-01_20-59-04
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 21:03 2015-12-01_21-03-55
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 21:05 2015-12-01_21-05-32
drwxr-xr-x 2 builder gitgroup 4096 Dec  1 21:07 2015-12-01_21-07-03
lrwxrwxrwx 1 builder gitgroup   19 Nov 27 21:33 31 -> 2015-11-27_21-33-16
lrwxrwxrwx 1 builder gitgroup   19 Nov 28 11:58 32 -> 2015-11-28_11-58-24
lrwxrwxrwx 1 builder gitgroup   19 Nov 28 15:33 40 -> 2015-11-28_15-33-32
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 11:28 48 -> 2015-12-01_11-28-56
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 17:35 49 -> 2015-12-01_17-35-30
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 20:42 50 -> 2015-12-01_20-42-20
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 20:46 51 -> 2015-12-01_20-46-33
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 20:49 52 -> 2015-12-01_20-49-45
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 20:51 53 -> 2015-12-01_20-51-41
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 20:54 54 -> 2015-12-01_20-54-57
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 20:57 55 -> 2015-12-01_20-57-03
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 20:59 56 -> 2015-12-01_20-59-04
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 21:03 57 -> 2015-12-01_21-03-55
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 21:05 58 -> 2015-12-01_21-05-32
lrwxrwxrwx 1 builder gitgroup   19 Dec  1 21:07 59 -> 2015-12-01_21-07-03
lrwxrwxrwx 1 builder gitgroup    2 Dec  1 21:03 lastFailedBuild -> 57
lrwxrwxrwx 1 builder gitgroup    2 Dec  1 21:07 lastStableBuild -> 59
lrwxrwxrwx 1 builder gitgroup    2 Dec  1 21:07 lastSuccessfulBuild -> 59
lrwxrwxrwx 1 builder gitgroup    2 Nov 25 13:18 lastUnstableBuild -> -1
lrwxrwxrwx 1 builder gitgroup    2 Dec  1 21:03 lastUnsuccessfulBuild -> 57


作者: haooooaaa    时间: 2015-12-01 21:24
本帖最后由 haooooaaa 于 2015-12-01 21:29 编辑
  1. awk '/^l/{if(a[$NF]++>1)print $NF;if(a[$(NF-2)]++>1)print $(NF-2)}' file
  2. 57
  3. 59
复制代码

作者: jiangling_0103    时间: 2015-12-01 21:42
shell 真是博大精深啊 ,多谢多谢
作者: MMMIX    时间: 2015-12-01 22:05
本帖最后由 MMMIX 于 2015-12-01 22:09 编辑

回复 1# jiangling_0103


    最通用办法就是(自己)写个函数,记录中间每一个 soft link 的名字;要注意处理循环。
作者: dn833    时间: 2015-12-01 22:56
直接readlink啥参数都不给不就能得到59了嘛。。。。。
作者: yjh777    时间: 2015-12-01 23:55
awk '/^l/{a[$(NF-2)]=$NF; a2[$NF]=$(NF-2)} END {for (v in a) {if (v in a2) print a2[v], "->", v, "->", a[v] } }'
作者: jiangling_0103    时间: 2015-12-02 09:36
多谢楼上各位,看来 sed 和 awk 还是必修课啊




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2