파일 확장자를 제거하려고 시도했지만 때로는 .2가 .1 또는 .3이 ./m161016_023529_42229_c101105162550000001823259804261747_s1_p0.2.bax.h5
되었습니다 ../m161016_023529_42229_c101105162550000001823259804261747_s1_p0.2
이것은 배쉬 코드입니다:
#!/bin/bash
for i in $(ls -d /work/waterhouse_team/All_RawData/Each_Cell_Raw/RSII_SMRT*/Analysis_Results);
do
cd $i
baxs=($(find . -type f -name "*.bax.h5"))
cat <<EOF
#qsub <<EOF
#!/bin/bash -l
#PBS -N bax2bam
#PBS -l walltime=150:00:00
#PBS -j oe
#PBS -l mem=50G
#PBS -l ncpus=4
#PBS -M [email protected]
##PBS -m bea
source /work/waterhouse_team/apps/pacbio/setup-env.sh
cd $i;
bax2bam ${baxs[@]} -o ${baxs[0]%%.bax.h5} --subread
EOF
done
이것은 bash 출력입니다:
#qsub <<EOF
#!/bin/bash -l
#PBS -N bax2bam
#PBS -l walltime=150:00:00
#PBS -j oe
#PBS -l mem=50G
#PBS -l ncpus=4
#PBS -M [email protected]
##PBS -m bea
source /work/waterhouse_team/apps/pacbio/setup-env.sh
cd /work/waterhouse_team/All_RawData/Each_Cell_Raw/RSII_SMRT72/Analysis_Results;
bax2bam ./m161014_135413_42229_c101104702550000001823259804261737_s1_p0.1.bax.h5 ./m161014_135413_42229_c101104702550000001823259804261737_s1_p0.2.bax.h5 ./m161014_135413_42229_c101104702550000001823259804261737_s1_p0.3.bax.h5 -o ./m161014_135413_42229_c101104702550000001823259804261737_s1_p0.1 --subread
#qsub <<EOF
#!/bin/bash -l
#PBS -N bax2bam
#PBS -l walltime=150:00:00
#PBS -j oe
#PBS -l mem=50G
#PBS -l ncpus=4
#PBS -M [email protected]
##PBS -m bea
source /work/waterhouse_team/apps/pacbio/setup-env.sh
cd /work/waterhouse_team/All_RawData/Each_Cell_Raw/RSII_SMRT73/Analysis_Results;
bax2bam ./m161016_023529_42229_c101105162550000001823259804261747_s1_p0.2.bax.h5 ./m161016_023529_42229_c101105162550000001823259804261747_s1_p0.3.bax.h5 ./m161016_023529_42229_c101105162550000001823259804261747_s1_p0.1.bax.h5 -o ./m161016_023529_42229_c101105162550000001823259804261747_s1_p0.2 --subread
내가 놓친 게 무엇입니까?
미리 감사드립니다
답변1
문자열 조작 명령은 해당 .bax.h5
부분만 제거합니다. 추가 선행 점과 숫자를 제거하려면 다음과 같은 것을 사용하십시오 ${baxs[0]%%.[0-9].bax.h5}
.
답변2
제가 보기에는 점 3개로 구성된 확장자를 제거하려는 것 같습니다(예 .2.bax.h5
: 이것이 사실이라면 매개변수 확장을 사용할 수 있습니다). 또한 파일과 같은 파일을 사용하거나 처리해서는 안 됩니다 ls
.find
#!/bin/bash
shopt -s globstar nullglob
for f in **/*.bax.h5; do
mv -- "$f" "${f%.*.*.*}"
done
exit
*.bax.h5
이는 작업 디렉터리에서 시작하여 일치하는 파일을 반복적으로 반복합니다. 그런 다음 문자열 끝부터 시작하여 확장을 제거하고 .
총 3번 표시될 때까지 모든 것을 제거합니다.