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