というディレクトリがありますSTRBAM
。そのうち、.bam
他のディレクトリには次のファイルがあります。symbolic linked
Sample-CK-4952-01A-01D-1719-10.bam
Sample-A6-5656-01A-21D-A270-10.bam
Sample-AZ-4315-01A-01D-1408-10.bam
Sample-T9-A92H-01A-11D-A36X-10.bam
Sample-DY-A1H8-01A-21D-A152-10.bam
Sample-DC-5869-01A-01D-1657-10.bam
Sample-CI-6623-01B-11D-1826-10.bam
Sample-AA-3980-01A-02W-0995-10.bam
Sample-F4-6569-01A-11D-1771-10.bam
All.txt
また、同じディレクトリに次の情報を含むテキストファイルがあります。
submitter_id Patient
Sample-CK-4952-01A-01D-1719-10 Sample-CK-4952
Sample-A6-5656-01A-21D-A270-10 Sample-A6-5656
Sample-AZ-4315-01A-01D-1408-10 Sample-AZ-4315
Sample-T9-A92H-01A-11D-A36X-10 Sample-T9-A92H
Sample-DY-A1H8-01A-21D-A152-10 Sample-DY-A1H8
Sample-DC-5869-01A-01D-1657-10 Sample-DC-5869
別のディレクトリがありますNEW
。ディレクトリ内のファイル.bam
の情報を使用して、ファイルをディレクトリにシンボリックリンクしたいと思います。All.txt
STRBAM
New
ディレクトリの出力は次のようになりますNew
。
Sample-CK-4952-01A-01D-1719-10.bam
Sample-A6-5656-01A-21D-A270-10.bam
Sample-AZ-4315-01A-01D-1408-10.bam
Sample-T9-A92H-01A-11D-A36X-10.bam
Sample-DY-A1H8-01A-21D-A152-10.bam
Sample-DC-5869-01A-01D-1657-10.bam
awk
以下を実行するためにコマンドを使用しようとしましたが、ファイルの情報を使用して必要な必要なファイルのみをリンクするのではなく、すべてのファイルをリンクしましたxargs
。All.txt
awk 'NR > 1{ print $1 }' All.txt | xargs -I {} ln -s /path/to/STRBAM/* /path/to/New/
答え1
ソースパスの代わりにaを使用するので、すべてのファイルを/path/to/STRBAM/*
複数/path/to/New/
回接続します。つまり:*
{}
awk 'NR > 1{ print $1 }' All.txt | xargs -I{} ln -s /path/to/STRBAM/{}.bam /path/to/New/
ソースディレクトリにシンボリックリンクがあることを確認するために追加のチェックを追加するには、小さなシェルスクリプトを使用し、ソースディレクトリとターゲットディレクトリを最初の2つの場所引数としてスクリプトに渡します。
awk 'NR > 1{ print $1 }' All.txt | xargs sh -c '
src=$1; shift
dest=$1; shift
for i do
if [ -h "$src/${i}.bam" ]; then
ln -s "$src/${i}.bam" "$dest"
fi
done
' sh /path/to/STRBAM /path/to/New