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

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
5637 次点击
所在节点    Linux
45 条回复
joke392
2018-09-07 09:37:03 +08:00
不想写脚本的话,可以试试看这个小软件:RegexRenamer
momocraft
2018-09-07 09:46:29 +08:00
用 bash 做这个要正确地搞定各种 blob 和数层 escape,考虑别的语言吧..
momocraft
2018-09-07 09:46:44 +08:00
*各种 glob
holmesabc
2018-09-07 09:49:15 +08:00
直接 rename 命令吧
liangzi
2018-09-07 09:51:59 +08:00
@holmesabc 我的发行版 rename 还很奇葩 是个 gui 界面的试了一下还不行。。。
liangzi
2018-09-07 09:52:15 +08:00
@joke392 谢谢 回去试试
liangzi
2018-09-07 09:52:24 +08:00
@momocraft 好的 谢谢
mwwfer
2018-09-07 09:58:11 +08:00
试下 Total Commander 批量重命名,文件名在 Sublime Text 或者 VS Code 里面批量处理一下,1 分钟搞定。
iwtbauh
2018-09-07 10:23:05 +08:00
mv $file 改为 mv "$file"
omph
2018-09-07 10:36:16 +08:00
安装 renameutils,使用 qmv
zhouzm
2018-09-07 11:00:42 +08:00
用 vim 可以随心欲的改。

http://vim.wikia.com/wiki/Bulk_rename_files_with_Vim

vim 的正则: http://vimregex.com/

例如匹配 行首大括号部分::/\[\d\+\.*.\+\],至于匹配 .-. 更容易了 :/\.-\.

替换使用 :%s,:%s/\[\d\+\.*.\+\]//gc,无需确认的话,去掉 c
sunznx
2018-09-07 11:02:21 +08:00
这种有规律的,一般都是用 emacs 的 dired 解决
liangzi
2018-09-07 11:08:09 +08:00
@omph openSUSE15.0 官方没有这个包 只有 42.3 个人打包的一个。。。
liangzi
2018-09-07 11:08:59 +08:00
@iwtbauh 试了 不行 里面的奇葩字符太多无法实现
liangzi
2018-09-07 11:10:13 +08:00
@zhouzm 这里的文件名字都是目录 不是单纯的单个 如果是单个文件的话用 kate 就能搞定了
liangzi
2018-09-07 11:11:03 +08:00
@sunznx 没玩过 emacs。。。。。
Aprilming
2018-09-07 11:25:46 +08:00
好头像,我还有个 blackbetty passport 呢。看到这个标志,真情怀啊、
redsonic
2018-09-07 11:28:29 +08:00
ls -i
找到文件对应的 inode number
然后
find -inum 刚才找到的 inodenum -exec mv '{}' '新文件名' \;
liangzi
2018-09-07 11:44:22 +08:00
@redsonic 我的卖了。。。。
liangzi
2018-09-07 11:50:58 +08:00
@redsonic 我试试 谢谢

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

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

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

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

© 2021 V2EX