removendo extensões de arquivo com bash

0

Eu tentei remover a extensão de arquivo de ./m161016_023529_42229_c101105162550000001823259804261747_s1_p0.2.bax.h5 , mas recebi ./m161016_023529_42229_c101105162550000001823259804261747_s1_p0.2 . O 0,2 é às vezes 0,1 ou 0,3.

Este é o código bash:

#!/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

Esta é a saída do 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

O que eu senti falta?

Obrigado antecipadamente

    
por user977828 12.12.2017 / 00:03

2 respostas

2

Seu comando de manipulação de string está removendo apenas a parte .bax.h5 . Para remover também um ponto e um dígito líder extra, use algo como ${baxs[0]%%.[0-9].bax.h5} .

    
por 12.12.2017 / 00:13
0

Parece-me que você deseja remover uma extensão que consiste em três pontos, por exemplo, %código%. Se isso for verdade, você pode usar uma expansão de parâmetro para isso. Além disso, você não deve usar .2.bax.h5 e ls como se fosse processar os arquivos.

#!/bin/bash

shopt -s globstar nullglob

for f in **/*.bax.h5; do
   mv -- "$f" "${f%.*.*.*}"
done

exit

Isso iterará recursivamente sobre os arquivos correspondentes a find , começando com o diretório de trabalho. Em seguida, ele remove a extensão iniciando no final da string e remove tudo até ver um *.bax.h5 , três vezes no total.

    
por 12.12.2017 / 20:15

Tags