我想为我的文件创建符号链接(总共350个文件)
cd ./my_files
PD26400a.fixedheader.hs37d5.cram
PD26400a.fixedheader.hs37d5.cram.crai
...
我有一个文本文件,其中 my_files 目录(第 2 列)中的每个文件名都对应于其旧名称(第 1 列)
SAMEA3471108.fixed.GRCh37d5.cram PD26400a.fixedheader.hs37d5.cram
SAMEA3471108.fixed.GRCh37d5.cram.crai PD26400a.fixedheader.hs37d5.cram.bai
SAMEA3471112.fixed.GRCh37d5.cram PD26400b.fixedheader.hs37d5.cram
SAMEA3471112.fixed.GRCh37d5.cram.crai PD26400b.fixedheader.hs37d5.cram.bai
我想生成符号链接并得到这个输出
SAMEA3471108.fixed.GRCh37d5.cram -> PD26400a.fixedheader.hs37d5.cram
SAMEA3471108.fixed.GRCh37d5.cram.crai -> PD26400a.fixedheader.hs37d5.cram.bai
SAMEA3471112.fixed.GRCh37d5.cram -> PD26400b.fixedheader.hs37d5.cram
SAMEA3471112.fixed.GRCh37d5.cram.crai -> PD26400b.fixedheader.hs37d5.cram.bai
我怎样才能做到这一点?
答案1
既然你已经有了两列,你尝试过 awk 吗?
echo 'SAMEA3471108.fixed.GRCh37d5.cram PD26400a.fixedheader.hs37d5.cram' | awk '{print $1, "->", $2}'
SAMEA3471108.fixed.GRCh37d5.cram -> PD26400a.fixedheader.hs37d5.cram
你可以使用这样的东西,也许:
awk '{ system("ln $1 $2") }
答案2
$ < <(awk 'NF==2 {print "ln -s -T "$1 " " $2}' filein) xargs -0 bash -c
filein
包含两列的文本文件在哪里。
编辑:将-s
标志添加到ln
cmd 调用中,假设您需要符号链接而不是默认的硬链接。