免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1391 | 回复: 5

[文本处理] Linux 批量重命名的问题 [复制链接]

论坛徽章:
0
发表于 2018-12-27 14:16 |显示全部楼层
本帖最后由 277702021 于 2018-12-27 14:17 编辑

在一个文件夹里有很多个子文件夹,每个字文件夹里的文件都不一样。


例如
/ok/AAA/9999_13800138000_123_222.mp3
/ok/BBB/88_15800158000_223_112.mp3
/ok/CCC/777_17800178000_823_192.mp3




想做一个批处理,批量重命名OK目录下的所有子目录里面的mp3文件,且只保留其中的电话号码,想变成:


/ok/AAA/13800138000.mp3
/ok/BBB/15800158000.mp3
/ok/CCC/17800178000.mp3

论坛徽章:
0
发表于 2018-12-27 16:29 |显示全部楼层
#!/bin/bash
#
files=(`find /ok -name "*.mp3"`)
for i in ${files[@]};do  
  new_name=$(basename $i | cut -d'_' -f 2)
  mv $i `dirname $i`/${new_name}.mp3
done

论坛徽章:
0
发表于 2018-12-27 17:46 |显示全部楼层
非常感谢 qw7119255  ,你的方法可以,但是还存在一个问题,如果两个文件名一样,会自动删除一个,如果遇到同名,可以保留吗?
例如:

例如
/ok/AAA/9999_13800138000_1673_262.mp3
/ok/BBB/9999_13800138000_123_622.mp3
/ok/CCC/777_17800178000_823_192.mp3
/ok/DDD/777_15800178000_823_192.mp3




其中有两个  13800138000   


是否可以保留呢?比如今天有一个  13800138000 这个号码,明天又有一个 13800138000 号码,可不可以把明天的 13800138000 变成  13800138000A  后台的变成  13800138000C


也就是文件名称如果相同不要覆盖,在后面加一个A,再相同就加一个B。






论坛徽章:
0
发表于 2018-12-27 18:39 |显示全部楼层
直接加个时间好了

#!/bin/bash
#
tody=`date +%F`
files=(`find /ok -name "*.mp3"`)
for i in ${files[@]};do  
  new_name=$(basename $i | cut -d'_' -f 2)
  if [ -f `dirname $i`/${new_name}.mp3 ];then
    mv `dirname $i`/${new_name}.mp3 `dirname $i`/${new_name}_${tody}.mp3
    mv $i `dirname $i`/${new_name}.mp3
  else
    mv $i `dirname $i`/${new_name}.mp3
  fi
done

论坛徽章:
0
发表于 2018-12-27 20:38 |显示全部楼层
谢谢啊,试过了,但是不行。

如果名称相同,只在后面加一个A也可以,不用加B了,我只保留两个文件也行,这样难度是不是降低了一点?

论坛徽章:
0
发表于 2018-12-29 16:43 |显示全部楼层
本帖最后由 277702021 于 2018-12-29 16:44 编辑

再请问一下:

/13800138000_xxx22_1111.mp3
/13800138000_xd23k_2222.mp3
/13800138000_xd232_3333.mp3
/13912340000_saddd_2222.mp3


这样的状况,我只想保留前面的电话号码,但是有3个号码相同,能否实现如果遇到相同的号码在后面加一个 A?比如13800138000   这个号码已经有了,相同的号码第2个能否变成   13800138000A ,第3个号码13800138000AA,最终得到

13800138000.mp3
13800138000A.mp3
13800138000AA.mp3
13912340000.mp3

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP