免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3351 | 回复: 15

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

论坛徽章:
0
发表于 2018-07-05 17:20 |显示全部楼层
在一个文件夹里有很多个子文件夹,每个字文件夹里的文件都不一样。

例如
/ok/AAA/13800138000_123_222.mp3
/ok/BBB/15800158000_223_112.mp3
/ok/CCC/17800178000_823_192.mp3


想做一个批处理,批量重命名OK目录下的所有子目录里面的mp3文件,且只保留前面11位,想变成:

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

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
发表于 2018-07-06 10:56 |显示全部楼层
  1. find /ok -regex '.+\.mp3'|sed -r 's#^(.*)_\w+_\w+(\.\w+)$#mv & \1\2#e'
复制代码

论坛徽章:
0
发表于 2018-07-06 13:50 |显示全部楼层

谢谢回复,

但是代码没有起作用。


提示:find: ‘/ok’: No such file or directory



我需要的是所有的子文件夹都起作用。

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
发表于 2018-07-06 14:19 |显示全部楼层
回复 3# 277702021

不是代码的问题   是你没有/ok这个目录

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
发表于 2018-07-06 15:18 |显示全部楼层
回复 3# 277702021

代码没问题

论坛徽章:
0
发表于 2018-07-06 18:23 |显示全部楼层
本帖最后由 277702021 于 2018-07-07 09:46 编辑
o枫叶o飘零 发表于 2018-07-06 14:19
回复 3# 277702021

不是代码的问题   是你没有/ok这个目录

还是不行呀,我ok目录。

我的环境是 Centos7

OK 目录下有很多子目录,

/ok/AAA/
/ok/BBB

还有就是这个代码第一次运行没有起作用,我以为是权限的问题,后来全部 chmod -R 777 再测试,也不行,提示 find: ‘/ok’: No such file or directory

我仔细看了一下,发现是我自己的问题,在前面要加一个 .  在 OK 目录上层,输入  find ./ok -regex '.+\.mp3'|sed -r 's#^(.*)_\w+_\w+(\.\w+)$#mv & \1\2#e'

代码运行了,没有出现错误。

但是,ok/AAA以及ok/BBB还有其它文件夹的文件都没有变化,也就是没有起作用。


论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
发表于 2018-07-08 09:10 |显示全部楼层
你那ok不是在根目录

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-07-08 11:00 |显示全部楼层
https://www.aliyun.com/jiaocheng/203398.html
-regex '.+\.mp3'|
-regex '\/ok\/.*\/.+\.mp3'|
-regex '.*\/.+\.mp3'|

论坛徽章:
0
发表于 2018-07-09 09:54 |显示全部楼层
试过了, 在根目录建立一个 OK 文件夹,运行  find /ok -regex '.+\.mp3'|sed -r 's#^(.*)_\w+_\w+(\.\w+)$#mv & \1\2#e'  


与上面这位朋友的命令,都无法实现顶楼的要求。

都无法保留前11位。

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
发表于 2018-07-09 10:42 |显示全部楼层
本帖最后由 wh7211 于 2018-07-09 10:44 编辑

回复 9# 277702021


试过了, 在根目录建立一个 OK 文件夹,运行  find /ok -regex '.+\.mp3'|sed -r 's#^(.*)_\w+_\w+(\.\w+)$#mv & \1\2#e'  


与上面这位朋友的命令,都无法实现顶楼的要求。

都无法保留前11位。

帮你测试一下,代码没问题
  1. cd /

  2. tree ok
  3. ok
  4. ├── 13800138001_123_222.mp3
  5. ├── 13800138002_123_222.mp3
  6. ├── 13800138003_123_222.mp3
  7. ├── AAA
  8. │   ├── 13800138004_123_222.mp3
  9. │   ├── 13800138005_123_222.mp3
  10. │   └── 13800138006_123_222.mp3
  11. └── BBB
  12.     ├── 13800138007_123_222.mp3
  13.     ├── 13800138008_123_222.mp3
  14.     └── 13800138009_123_222.mp3

  15. 2 directories, 9 files

  16. find /ok -regex '.+\.mp3'
  17. /ok/13800138001_123_222.mp3
  18. /ok/BBB/13800138009_123_222.mp3
  19. /ok/BBB/13800138008_123_222.mp3
  20. /ok/BBB/13800138007_123_222.mp3
  21. /ok/13800138003_123_222.mp3
  22. /ok/13800138002_123_222.mp3
  23. /ok/AAA/13800138005_123_222.mp3
  24. /ok/AAA/13800138004_123_222.mp3
  25. /ok/AAA/13800138006_123_222.mp3

  26. find /ok -regex '.+\.mp3'|sed -r 's#^(.*)_\w+_\w+(\.\w+)$#mv & \1\2#e'

  27. tree ok
  28. ok
  29. ├── 13800138001.mp3
  30. ├── 13800138002.mp3
  31. ├── 13800138003.mp3
  32. ├── AAA
  33. │   ├── 13800138004.mp3
  34. │   ├── 13800138005.mp3
  35. │   └── 13800138006.mp3
  36. └── BBB
  37.     ├── 13800138007.mp3
  38.     ├── 13800138008.mp3
  39.     └── 13800138009.mp3

  40. 2 directories, 9 files
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP