Порядок переименования нескольких файлов [дубликат]

На этот вопрос уже есть ответ:

У меня есть большое количество файлов, которые мне нужно переименовать. Мои файлы называются 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

Спасибо за помощь

4
задан 7 May 2018 в 16:59

2 ответа

Я думаю, что сделал то, что Вы спрашивали использование 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.

4
ответ дан 1 December 2019 в 09:06

В то время как Python или Perl будут быстрее, можно реализовать ту же идею как ответ @Mart в оболочке:

for i in {1..100}; do mv sample_$i.wav sample_$((i-1)).wav; done
4
ответ дан 1 December 2019 в 09:06

Другие вопросы по тегам:

Похожие вопросы: