重命名多个文件并保持顺序

重命名多个文件并保持顺序

我有很多文件需要重命名。我的文件名为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

感谢您的帮助

答案1

我想我使用 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

答案2

虽然 Python 或 Perl 会更快,但你可以实现同样的想法@Mart 的回答在外壳中:

for i in {1..100}; do mv sample_$i.wav sample_$((i-1)).wav; done

相关内容