文件名字中各种奇葩字符怎么批量去除呢

2018-09-07 09:17:56 +08:00
 liangzi
[87].Hemi-Sync.-.Human Plus.-.Do This Now
[88].Hemi-Sync.-.Human Plus.-.Eat-No Eat
[89].Hemi-Sync.-.Human Plus.-.Eight Great
[90].Hemi-Sync.-.Human Plus.-.Hypertension
[91].Hemi-Sync.-.Human Plus.-.Immunizing
[92].Hemi-Sync.-.Human Plus.-.Imprint
[93.Update].Hemi-Sync.-.Human Plus.-.Let-Go
[94].Hemi-Sync.-.Human Plus.-.Lungs Repairs and Maintenance
[95].Hemi-Sync.-.Human Plus.-.Mobius West
[96].Hemi-Sync.-.Human Plus.-.Nutricia
[97].Hemi-Sync.-.Human Plus.-.Off-Loading
[98].Hemi-Sync.-.Human Plus.-.Pain Control
[130].Hemi-Sync.-.MindFood.-.Soft and Still
[131].Hemi-Sync.-.MindFood.-.The ''SO'' Chord
[132].Hemi-Sync.-.MindFood.-.The Way of Hemi-Sync
[133].Hemi-Sync.-.Explore the Original.-.Beyond the Golden Light
[134].Hemi-Sync.-.Explore the Original.-.Connecting With Your Inner Guides
[135].Hemi-Sync.-.Explore the Original.-.Golden Mind
[136].Hemi-Sync.-.Explore the Original.-.Healing Journeys Support
[137].Hemi-Sync.-.Explore the Original.-.Inner States Dawning of Awareness
137Hemi-Sync.-.Explore the Original.-.Inner States Dawning of Awareness 内在意识的曙光
[138].Hemi-Sync.-.Explore the Original.-.The Music of Graceful Passages

## 去掉改文件名开头的 “\[”
for file in ls \[*;
do
mv $file `echo $file | sed 's/\[//g'`;
done

## 去掉文件名字开头的“〖”
for file in ls 〖*;
do
mv $file `echo $file | sed 's/〖//g'`
done

#--------------
##去掉文件名中间的 "]"
for file in `ls | grep "]"`;
do
mv $file `echo $file | sed 's/]//g'`;
done

##去掉文件名字中间的“〗”
for file in `ls | grep "〗"`
do
mv $file `echo $file | sed 's/〗//g'`
done

## 去掉文件名字中间的“."
for file in `ls | grep "\."`
do
mv $file `echo $file | sed 's/\./-/g'`
done

##改-rar 为.rar
for file in `ls | grep "\-rar"`
do
mv $file `echo $file | sed 's/\-rar/.rar/g'`
done

##去掉文件名字中的“专辑名称:”
for file in `ls | grep "专辑名称:"`
do
mv $file `echo $file | sed 's/专辑名称://g'`
done

##去掉文件名字中的“:门罗研究所最广受欢迎的系列:”
for file in `ls | grep ":门罗研究所最广受欢迎的系列:"`
do
mv $file `echo $file | sed 's/:门罗研究所最广受欢迎的系列://g'`
done

## 批量解压 rar 到各自目录
for i in ls *.rar;
do
rar x $i
done
5689 次点击
所在节点    Linux
45 条回复
zhouzm
2018-09-07 12:01:31 +08:00
@liangzi 你认真看过 Bulk_rename_files_with_Vim 这个链接了吗?

第一步就是教怎么批量把文件或目录名导入 vim,然后是通过正则替换生成批量的 mv 命令,最后是执行。
我没明白你说的单个文件是什么意思。
liangzi
2018-09-07 12:10:43 +08:00
@zhouzm 我看看谢谢
kokutou
2018-09-07 12:15:07 +08:00
1、批量替换 "." 为 " "
2、批量替换 " - " 为 " "
3、批量替换 " 扩展名" 为 ".扩展名"
mingl0280
2018-09-07 12:26:08 +08:00
1. (\.)?-(\.)? 替换为 -
2. (\[)?(\d+)(\]|\.Update)?(\]|\.)? 保留第二组并加一个空格
另外你给的文件名只能说明你的暴力替换完全没用……
liangzi
2018-09-07 12:46:50 +08:00
弄好一部分了 谢谢各位的回答
特别感谢
@zhouzm
@redsonic
aaaaasam
2018-09-07 14:29:44 +08:00
cat ~/下载 /name | while read line; do echo $line | sed -e 's/[.|-]/ /g' -e 's/\[/ /' -e 's/\]/ /' ; done
liangzi
2018-09-07 15:12:22 +08:00
@aaaaasam 刚弄好了 谢谢你
Lostars
2018-09-07 16:18:55 +08:00
cat name | sed 's/\[//g' | sed 's/\]//' | sed "s/[.-]//g"

01HemiSyncMetaMusicAngel Paradise 天使乐园
02HemiSyncMetaMusicAscension 耶稣升天
03HemiSyncMetaMusicBaroque Garden
04HemiSyncMetaMusicBetween Worlds
05HemiSyncMetaMusicBreakthrough for peakperformance
06HemiSyncMetaMusicChakra Journey
07HemiSyncMetaMusicCloudscapes
08HemiSyncMetaMusicConvergence

不知道是不是要这样的效果
xiaq
2018-09-07 16:45:25 +08:00
mv $file "$(echo $file | tr -d '[]-.')"
liangzi
2018-09-07 17:53:10 +08:00
@Lostars 是的 请问你是哪种方法实现的?
Lostars
2018-09-07 19:32:59 +08:00
@liangzi
cat name | sed 's/\[//g' | sed 's/\]//' | sed "s/[.-]//g"
Tumblr
2018-09-07 20:11:47 +08:00
感觉直接替换掉就 OK 吧? 替换之后简单看了下,和 #28 楼的好像是一样的。

在 vim 中 `:%s/[\[\]\.-]//g`

或者如果用的是 PowerShell: `(gc name.txt -Encoding Default) -replace "[\[\]\.-]",""`
wweir
2018-09-07 20:45:06 +08:00
ls | xargs awk '{printf("mv %s `echo %s \ sed -E s/[^0-9A-Za-z]//g`",$1,$1)}' | sh
手机码字,自行调试
user002
2018-09-07 21:27:10 +08:00
从后往前匹配
user002
2018-09-07 21:32:29 +08:00
学习学习
ETiV
2018-09-07 21:50:49 +08:00
ls \[* | while read line ; do new_name=$(echo "${line}" | sed 's!\[!!g' | sed 's!\]!!g' | sed 's!\.-\.!_!g') ; mv "${line}" "${new_name}" ; done

ls [ 开头的文件,会产生每行一个文件名
循环每行的文件名:
3 个 sed 分别移除 [、移除 ]、替换 .-. 成 _,形成新的 name
然后 mv 老文件名 新文件名
liangzi
2018-09-07 22:00:44 +08:00
@ETiV 实际上不行 谢谢回复
ETiV
2018-09-07 22:06:20 +08:00
@liangzi 可是,我都已经跑完了啊…😂
liangzi
2018-09-07 22:10:31 +08:00
- 感谢大家热心的帮助
- 原文件名字上传到了这里[https://transfer.sh/14gOEi/menluo_music_directory-txt]( https://transfer.sh/14gOEi/menluo_music_directory-txt0 有效期 14 天
- 这是压缩文件 要做的目的就是批量解压然后把解压的文件批量重新命名 以实现文件名字中没有奇葩字符
- 我是个这方面的外行 用到的方法也都是从网上搜出来比猫画虎的试着做
- 目前从 @zhouzm @redsonic 两位提供的方法中自己慢慢摸索着实现了个差不多 特别感谢~ ^_^
- 最后的目录是这样的[https://transfer.sh/WzeMa/remenlu_music]( https://transfer.sh/WzeMa/remenlu_music)
ps1aniuge
2018-09-08 01:08:33 +08:00
#win,linux 通用的 powershell 代码
dir 你的目录|foreach {
$a = $_.name.
Replace('.-.'.'').
Replace('['.'').
Replace(']'.'').
Replace('〖'.'').
Replace('〗'.'').
Replace('.'.'').
Replace('-rar'.'.rar').
Replace('专辑名称:'.'').
Replace(':门罗研究所最广受欢迎的系列:'.'')

Rename-Item -LiteralPath $_.FullName -NewName $a
}

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

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

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

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

© 2021 V2EX