使用脚本Shell更改所有我的文件的名称,但使用特定规则
我有一辆车,我的音频帖子只阅读特定顺序的音乐 我有一个很大的音乐列表,我想更改001 | justanexemple.mp3上的每个justanexemple.mp3和002 | I love stackoverflow上的下一个“I love stackoverflow.mp3” 另外,我们有一个限制是当我在009 | music.mp3上时,我想要下一个像这样的010 | music.mp3 我还遇到了一个问题,我有一些空间音乐,比如“我喜欢海龟。mp3” 所以命令mv不起作用 所以我写了这样的代码使用脚本Shell更改所有我的文件的名称,但使用特定规则,shell,parsing,mv,Shell,Parsing,Mv,我有一辆车,我的音频帖子只阅读特定顺序的音乐 我有一个很大的音乐列表,我想更改001 | justanexemple.mp3上的每个justanexemple.mp3和002 | I love stackoverflow上的下一个“I love stackoverflow.mp3” 另外,我们有一个限制是当我在009 | music.mp3上时,我想要下一个像这样的010 | music.mp3 我还遇到了一个问题,我有一些空间音乐,比如“我喜欢海龟。mp3” 所以命令mv不起作用 所以我写了这
#!/bin/sh
counter=001
for file in `ls -1 *.mp3 | sort -t. -k 2n`
do
newname=$counter'|'.$file
if [ $file != $newname ]
then mv $file $newname
fi
counter=`expr $counter + 1`
counter="00${counter}"
echo $counter done
但这不是很好
我的音乐列表是这样的:
> Kario & Yaret - Somos Lokos (Prod. By Las Ovejas Negras & Gaby.mp3
> Dj_Foxx-T_-_An_Sé_an_Nonm_(feat._Pompis)_-_.mp3
> Harry_Toddler_-_Draw_Mi_Table_wegotitfirst_com.mp3 Kario & Yaret Ft.mp3
> Mc Cassidy Ft. Polakan Y Delirious - Bad Boy.mp3
printf
c=0
for i in *.mp3; do
c=$((c+1))
pref=$(printf "%03d" $c)
echo "$i" "${pref}|$i"
done
如果输出效果良好,请将
echo
替换为mv
,以执行实际重命名。您要避免对带有文件名的循环使用,而不要使用ls
生成列表: