首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数字mp3大容量移动到终端中有外壳的折叠器

将数字mp3大容量移动到终端中有外壳的折叠器
EN

Stack Overflow用户
提问于 2022-09-03 12:04:10
回答 2查看 37关注 0票数 0

在一个文件夹中,我有很多用数字序列化的音频文件,它们都是mp3格式的,然后在同一个文件夹中,我有很多子文件夹--所有的子文件夹都有数字和斜杠,以及随后的字符--我想通过终端命令将数字化的音频文件批量地移到这个文件夹中,从相应的数字开始。目前,我用的是一个杆的运动,方法如下。

代码语言:javascript
复制
mv 1.mp3 1-*
mv 2.mp3 2-*
mv 3.mp3 3-*
mv 4.mp3 4-*
mv 5.mp3 5-*
mv 6.mp3 6-*
mv 7.mp3 7-*
mv 8.mp3 8-*
mv 9.mp3 9-*
mv 10.mp3 10-*
mv 11.mp3 11-*
mv 12.mp3 12-*
mv 13.mp3 13-*
mv 14.mp3 14-*
mv 15.mp3 15-*
mv 16.mp3 16-*
mv 17.mp3 17-*
mv 18.mp3 18-*
mv 19.mp3 19-*
mv 20.mp3 20-*
mv 21.mp3 21-*
mv 22.mp3 22-*
mv 23.mp3 23-*

有办法用一个代码来完成吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-03 12:51:05

您可以在没有内部循环的情况下这样做:

代码语言:javascript
复制
for mp3 in *.mp3; do
    subdir=( ${mp3%.*}-* ) # Create array of subdirs if there are many
    [[ -d $subdir ]] && mv "$mp3" "$subdir/" # Check if $subdir exists than mv
done

您还可以循环使用子目录,而不是.mp3:

代码语言:javascript
复制
for subdir in *[0-9]-*; { mv "${subdir%-*}.mp3" "$subdir"; }
票数 1
EN

Stack Overflow用户

发布于 2022-09-03 12:18:57

代码语言:javascript
复制
for file in *.mp3; do
   b="${file%.mp3}"
   for d in "$b"-*; do
     mv "$file" "$d"
     break
    done
done

内部循环是为了确保通配符展开到恰好一个匹配,或者移动到第一个匹配。您还可能希望确保目标是目录。

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

https://stackoverflow.com/questions/73592116

复制
相关文章

相似问题

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