Renomeia vários arquivos mantendo ordem [duplicada]

4

Eu tenho uma boa quantidade de arquivos para renomear. Meus arquivos são chamados sample_1.wav sample_2.wav ...

Eu preciso renomear cada um deles com um número menor no nome, sample_1.wav tem que se tornar sample_0.wav e assim por diante.

Eu tentei este script, mas ele não mantém a ordem:

#!/bin/bash

count=0

for file in *.wav
do
    new=$(printf "sample_%d.wav" "$count")
    mv -- "$file" "$new"
    (( count++ ))
done

Obrigado pela ajuda

    
por Grimdrem 07.05.2018 / 15:59

2 respostas

4

Acho que fiz o que você estava pedindo usando o Python:

#!/usr/bin/env python

import os

for i in range(0, 30):  # up to the highest number of your filenames
    os.system("mv sample_%i.wav sample_%i.wav" % (i+1, i)) 

Isso reduz o número após o sublinhado em 1 para cada um dos arquivos. Apenas certifique-se de inserir o maior número de seus arquivos na segunda entrada de range .

    
por Mart 07.05.2018 / 16:08
4

Embora Python ou Perl sejam mais rápidos, você pode implementar a mesma ideia como @ resposta do Mart no shell:

for i in {1..100}; do mv sample_$i.wav sample_$((i-1)).wav; done
    
por terdon 07.05.2018 / 16:35