小白批量下载 100 个 mp3 文件之后重命名的挣扎过程

2022-07-08 10:49:46 +08:00
 huntagain2008
下载得到
凡人修仙传( 1401-1500 ) 1.mp3
凡人修仙传( 1401-1500 ) 2.mp3
……
凡人修仙传( 1401-1500 ) 100.mp3


想得到
0001.mp3
0002.mp3
...
0100.mp3

$ rename -v 's/凡人修仙传( 1401-1500 )//' *.mp3
1.mp3
2.mp3
...
100.mp3

不会在前面补零,只好写 shell 脚本
#!/bin/sh
#
#
folder=download
dir=`pwd`

for file in $dir/$folder/*
do
mv $file `echo $file | awk -F/ '{printf("%04d.mp3\n", $NF)}'`
done


结束
2898 次点击
所在节点    分享创造
19 条回复
imicksoft
2022-07-08 10:53:30 +08:00
Bulk Rename Utility
xJogger
2022-07-08 11:18:50 +08:00
Total Commander
TrevorPhillips
2022-07-08 11:20:53 +08:00
牛逼,直接给逼得写了 bat 脚本
我都是用等死吧的工具 Renamer https://www.den4b.com/products/renamer
(网址很好记,就是等死吧)
TrevorPhillips
2022-07-08 11:22:06 +08:00
@TrevorPhillips 眼花了 linux 啊,当我上面没说
imKiva
2022-07-09 12:44:42 +08:00
bash:
find . -name "*.mp3" -exec bash -c 'mv "$0" "$(printf %04d $(tmp=${0##* } ; echo ${tmp%%.*})).mp3"' {} \;

zsh 支持嵌套字符串操作,可以:
find . -name "*.mp3" -exec zsh -c 'mv $0 $(printf %04d ${${0##* }%%.*}).mp3' {} \;
milukun
2022-07-09 16:22:56 +08:00
用 mac 的话,直接全选右键重命名就可以。
brsyrockss
2022-07-10 20:00:34 +08:00
给你两个工具,会写正则就行,一个叫 rename ,另一个叫 advanced renamer ,第二个复杂一些,我用第二个做过和你一样的事情,注意先拿别得文件练练手,有些东西删了就好再整理了。
另:建议文件不要纯 0001 0002 ,如果你有两个小说文件夹,都是同样命名方式,搜 0001 会出来 2 个结果,只能用路径来判断,可以编号后面跟个 -XXX 名字
lovestudykid
2022-07-10 23:38:43 +08:00
awk 都会用了,还什么小白啊...
lovestudykid
2022-07-10 23:40:09 +08:00
搜了下,rename 本身就可以 pad
huntagain2008
2022-07-11 07:49:08 +08:00
@lovestudykid 我只看了《 UNIX 编程环境 1983 版》前 6 章(花 5 块钱买了的书),只会很浅显的入门知识。
huntagain2008
2022-07-11 11:40:15 +08:00
小白用 python 版的批量重命名

#!/usr/bin/env python3
# 凡人修仙传( 1401-1500 ) 1.mp3 => 凡人修仙传 0001.mp3
#
import os
import sys
path = "/home/ht/下载 /"

try:
>>>>prefix = sys.argv[1]
except IndexError:
>>>>print("usage: python3 rename_pad.py argv1")
>>>>sys.exit(1)

for filename in os.listdir(path):
>>>>num = filename[:-4].split()[-1]
>>>>suffix = filename[-4:]
>>>>num = num.zfill(4)
>>>>new_filename = prefix + "_" + num + suffix
>>>>os.rename(os.path.join(path, filename), os.path.join(path, new_filename))
huntagain2008
2022-07-11 13:29:09 +08:00
rename 版, stackoverflow 比较容易查到这类简单问题
ht@ht-3470:~/下载$ rename 's/凡人修仙传( 1401-1500 ) //' *.mp3
1.mp3; 2.mp3......;100.mp3

ht@ht-3470:~/下载$ rename 's/\d+/sprintf("凡人修仙传_%04d",$&)/e' *.mp3
凡人修仙传_0001.mp3; 凡人修仙传_0001.mp3......;凡人修仙传_0100.mp3
qzhai
2022-07-11 15:40:16 +08:00
说出来你可能不信,mac 访达 自带 持批量重命名。。。。
huntagain2008
2022-07-11 16:26:12 +08:00
@qzhai 说来不好意思,至今不会用 Mac 。 昨天是试了访达的重命名,感觉不太好用,也许是我不会用。
我给旧笔记本装的 xubuntu ,发现它自带的批量重命名有替换、补齐、正则等,比我现在用的 kubuntu 的重命名强不少。

当然 windows 上的重命名软件就更多了,最近用过的菲菲更名宝贝,还有 Microsoft PowerToys
kemistep
2022-07-11 17:16:50 +08:00
python 快捷多了;
```
"""
文件名批量修改
示例:尚硅谷 2021 版 React 技术全家桶全套完整版(零基础入门到精通-男神天禹老师亲授) (P1. 001_尚硅谷 react 教程_react 简介).mp4
"""
import os, re, shutil
dst_dir = r"G:\FFOutput\react_shangguigu" #replace \ with /
os.chdir(dst_dir)
file_list = os.listdir(dst_dir)
for file in file_list:
new_name = re.findall(r'P.*?\.mp4$',file) # \u4E00-\u9FA5
if len(new_name)>=1:
print(new_name)
os.rename(file,new_name[0])
```
[python 文件名批量修改 - ministep88 - 博客园]( https://www.cnblogs.com/ministep/p/15587015.html )
runningowl
2022-07-12 12:23:19 +08:00
windows 的 powertoys 有重命名
liberty1900
2023-09-09 17:37:26 +08:00
我最近用 node 写了个脚本,解决了类似问题,特来考古

https://gist.github.com/librz/61156e472cc83fcb94ab8c99f874bcae
huntagain2008
2023-09-10 12:04:16 +08:00
@liberty1900 现在看来,重命名多个文件已经不是问题。并不需要写什么脚本,还是用带图形界面的软件更好。系统自带的更好。即使真的要用脚本或命令行工具,也需具备 rename -n 这样的预览功能,再未改名之前先看个效果。毕竟是不可逆的操作。专业的重命名软件都提供 log 或备份。

现在我都是用 Xubuntu 的 FileManager 自带的重命名。可重命名多个文件。

选中多个文件,按 F2 就进入对话框。可用在文件名、后缀、名称和后缀。

音频标签
插入日期
插入/改写
移除字符
搜索与替换
编号
大写/小写

正式改名之前,都可在新名称这一列看到预览效果,确认无误,再点击重命名文件的按钮。

rename 这个命令行工具也有 -n 选项可以不修改文件名,只预览新文件名的效果。
liberty1900
2023-09-10 13:02:48 +08:00
@huntagain2008 我这脚步默认就是 Dry Run ,手动加 -r 选项才会真正 rename

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX