На этот вопрос уже есть ответ:
У меня есть большое количество файлов, которые мне нужно переименовать. Мои файлы называются sample_1.wav sample_2.wav ...
Мне нужно переименовать каждый из них с меньшим числом в имени, sample_1.wav
должен стать sample_0.wav
и так далее.
Я пробовал этот сценарий, но он не поддерживает порядок:
#!/bin/bash
count=0
for file in *.wav
do
new=$(printf "sample_%d.wav" "$count")
mv -- "$file" "$new"
(( count++ ))
done
Спасибо за помощь
Я думаю, что сделал то, что Вы спрашивали использование 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))
Это сокращает количество после подчеркивания 1 для каждого из файлов. Просто удостоверьтесь, что Вы вводите наибольшее число своих файлов во второй записи range
.
В то время как Python или Perl будут быстрее, можно реализовать ту же идею как ответ @Mart в оболочке:
for i in {1..100}; do mv sample_$i.wav sample_$((i-1)).wav; done