首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >脚本Shell来更改我所有文件的名称,但要有具体的规则

脚本Shell来更改我所有文件的名称,但要有具体的规则
EN

Stack Overflow用户
提问于 2014-04-16 18:22:17
回答 1查看 33关注 0票数 1

我有一辆车,我的音频帖子只看带有特定顺序的音乐。

我有一个很大的音乐列表,我想改变001|justanexemple.mp3上的每一个001|justanexemple.mp3和下一个“我爱的stackoverflow.mp3”(我爱堆栈溢出)。

另外,我们有一个限制,就是当我在009|music.mp3上的时候,我想要下一个像010|music.mp3这样的限制

我还遇到了一个问题,就是我有一些空间像“我喜欢turtles.mp3”这样的音乐,所以命令mv不能工作.

所以我编写了这样的代码

代码语言:javascript
运行
复制
    #!/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

但不是很好..。

我的音乐清单是这样的:

代码语言:javascript
运行
复制
> 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

..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 18:30:51

  1. ls
  2. 不要使用字符串连接来格式化数字。使用printf
  3. 引用你的变量

您的脚本可以编写为:

代码语言:javascript
运行
复制
c=0
for i in *.mp3; do
  c=$((c+1))
  pref=$(printf "%03d" $c)
  echo "$i" "${pref}|$i"
done

如果输出看起来不错,请用echo替换为mv,以执行实际重命名。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23117253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档