라는 디렉토리가 있습니다 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/
소스 디렉토리에 심볼릭 링크가 있는지 확인하기 위해 추가 검사를 추가하려면 작은 쉘 스크립트를 사용하고 소스 및 대상 디렉토리를 처음 두 위치 인수로 스크립트에 전달할 수 있습니다.
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