首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Coding
V2EX  ›  Linux

shell 脚本通过正则修改文件名脚本编写

  •  
  •   openbsd · 74 天前 · 1549 次点击
    这是一个创建于 74 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司有一套古老系统迁移到 Linux 出现附件无法获取,原因大致为文件名包含中文,特殊符号等导致程序无法正常读取文件,现在想通过修改文件名和数据库记录后实现
    请教在 shell 上批量修改文件名如何编写脚本

    原文件名:123456789-XXXXXXXX.zzzz

    前段一定是一串随机 数字
    - 可能是其它字符 类似 _ 空格等
    XXXXXXXX 可能是 中 /英 文或者其他各种乱七八糟的字符
    zzzz 文件扩展名 可能是 3 位 /4 位英文字母

    希望改成 123456789.xxx
    也就是截取原文件名前所有数字部分+文件扩展名
    14 回复  |  直到 2019-09-29 18:02:53 +08:00
        1
    CallMeReznov   74 天前
    建议直接用 py 脚本
    walk 下所有文件,随机生成新的文件名后在向数据库提交修改.
        2
    CallMeReznov   74 天前   ♥ 1
    另外前几天有人问了相似的问题
    你可以看一下
    https://www.v2ex.com/t/604644
        3
    0x11901   74 天前
    先 find 找到文件和路径,再使用 basename 获取文件名字,再用 shell/bash 库截取-前的数字和.后的扩展名,最后 mv 一下搞定……为什么这种简单的东西还要用 python……古老系统上不一定有 py 环境啊
        4
    feikerwu   74 天前   ♥ 1
    rename 's/(\d*)\..*\.(.*)/$1\.$2/' *
        5
    CallMeReznov   74 天前
    @0x11901 #3 要顺便改数据库里的字段名称
    因为他是配合下载路径使用的,你光改了磁盘上的文件名,不改数据库内的信息不就成了文件丢失了?
        6
    openbsd   74 天前
    @feikerwu #4
    大神麻烦确认下?
    拷了几个文件执行后当前目录文件没任何变化......
        7
    Hopetree   74 天前
    首选 Python 脚本感觉更简单粗暴吧
        8
    openbsd   74 天前
    @CallMeReznov
    数据量大,会另外处理
    想先拷贝部分做下测试
        9
    Hopetree   74 天前   ♥ 1
    感觉你这个就是 Python 做的,用 Python 链接数据库,然后读取文件名,然后执行文件重命名(先备份一份)
        10
    0x11901   74 天前
    @CallMeReznov 我看他说的是:请教在 shell 上批量修改文件名如何编写脚本,原来还要改数据库……
        11
    xml123   74 天前
    你这样改文件名不会冲突吗
        12
    feikerwu   74 天前
    @openbsd 给个文件名我试下,我模拟了几个文件是没问题
        13
    openbsd   74 天前
    @xml123 #11 前面有个 10 多位的随机数,概率应该很小才是
    @feikerwu #12
    我怀疑是系统版本问题,我这边测试环境是 CentOS6
    11140554591817487-约克.jpg
    11133801918310436-1-10.zip
    11122486297324196-01.09 PL1801090.pdf
    1111985635562443.12.29.png
        14
    feikerwu   74 天前   ♥ 1
    @openbsd rename 's/^(\d*)[\s\S]*\.(.*)$/$1\.$2/' *

    匹配所有文件,拿到数值开头的$1 以及.xxx 结尾的 xxx $2,重命名为$1.$2, 试了你给的文件没问题,再跑不起来就母鸡了。。。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4377 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 02:11 · PVG 10:11 · LAX 18:11 · JFK 21:11
    ♥ Do have faith in what you're doing.