そのファイル名に基づいてシンボリックリンクを作成する

そのファイル名に基づいてシンボリックリンクを作成する

私のファイルへのシンボリックリンクを作成したいです(合計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

今2つの列があるので、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  

filein2つの列を含むテキストファイルはどこにありますか?

編集:デフォルトのハードリンクの代わりにシンボリックリンクが必要だとし、cmd呼び出し-sにフラグを追加しました。ln

関連情報