prename
abordagem:
prename -n 's/^([^_]+)_.*_([^_]+)_[0-9]+\./1$1.$2./' *.fastq
( -n
- nenhuma ação ; mostra quais arquivos seriam renomeados)
meus nomes de arquivos se parecem com:
A06_S6_L001_R1_001.fastq
A06_S6_L001_R2_001.fastq
B07_S6_L001_R1_001.fastq
B07_S6_L001_R2_001.fastq
C08_S6_L001_R1_001.fastq
C08_S6_L001_R2_001.fastq
e eu quero:
1A06.R1.fastq
1A06.R2.fastq
1B07.R1.fastq
1B07.R2.fastq
etc...
em outras palavras, eu quero manter a parte antes do primeiro sublinhado, a parte antes do último sublinhado, colocar um .
entre eles, manter a extensão do arquivo e colocar um número na frente da coisa toda.
Eu tenho o renome Perl, então eu estou supondo que seria melhor usar este comando, mas eu não sei regex ...
prename
abordagem:
prename -n 's/^([^_]+)_.*_([^_]+)_[0-9]+\./1$1.$2./' *.fastq
( -n
- nenhuma ação ; mostra quais arquivos seriam renomeados)
Com bash e dirname
e uma suposição de 1
como o prefixo inicial:
shopt -s globstar
for file in ./**/*.fastq
do
[[ $file =~ (...)_(..)_(....)_(..)_(...).fastq ]] &&
printf "%s\n" "mv -- "$file" "$(dirname "$file")"/1${BASH_REMATCH[1]}.${BASH_REMATCH[4]}.fastq"
done
E com este exemplo "entrada":
touch A06_S6_L001_R1_001.fastq A06_S6_L001_R2_001.fastq B07_S6_L001_R1_001.fastq B07_S6_L001_R2_001.fastq C08_S6_L001_R1_001.fastq C08_S6_L001_R2_001.fastq
mkdir subdir
cp *.fastq subdir/
Esta é a saída resultante:
mv ./A06_S6_L001_R1_001.fastq ./1A06.R1.fastq
mv ./A06_S6_L001_R2_001.fastq ./1A06.R2.fastq
mv ./B07_S6_L001_R1_001.fastq ./1B07.R1.fastq
mv ./B07_S6_L001_R2_001.fastq ./1B07.R2.fastq
mv ./C08_S6_L001_R1_001.fastq ./1C08.R1.fastq
mv ./C08_S6_L001_R2_001.fastq ./1C08.R2.fastq
mv ./subdir/A06_S6_L001_R1_001.fastq ./subdir/1A06.R1.fastq
mv ./subdir/A06_S6_L001_R2_001.fastq ./subdir/1A06.R2.fastq
mv ./subdir/B07_S6_L001_R1_001.fastq ./subdir/1B07.R1.fastq
mv ./subdir/B07_S6_L001_R2_001.fastq ./subdir/1B07.R2.fastq
mv ./subdir/C08_S6_L001_R1_001.fastq ./subdir/1C08.R1.fastq
mv ./subdir/C08_S6_L001_R2_001.fastq ./subdir/1C08.R2.fastq
Remova o printf "%s\n"
se os resultados parecerem corretos.
Tags rename regular-expression