免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7654 | 回复: 19
打印 上一主题 下一主题

[文件目录] 怎样用文件名称(前面的几个字符)批量命名文件内的图片? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-02-19 21:03 |只看该作者 |倒序浏览
30可用积分
本帖最后由 brokencluster 于 2018-02-20 08:13 编辑

怎样用文件名称批量命名文件内的图片?

  1. Project/
  2.   |
  3.   +--A031X050款名称33(6351)/
  4.   |    |
  5.   | +--001.jpg 002.jpg a1.jpg a2.jpg a3.jpg
  6.   |
  7.   +--A031W021款名称35(4134)/
  8.   |    |
  9.   | +--001.jpg 002.jpg a1.jpg a2.jpg b5.jpg
  10.   |
  11.   +--A033052名称41(4131)/
  12.   |    |
  13.   | +--001.jpg 002.jpg 003.jpg a1.jpg a2.jpg c5.jpg
  14. ...
复制代码


需要把文件夹内的图片命名成
  1. a031x050-00001.jpg a031x050-00002.jpg a031x050-00003.jpg a031x050-00004.jpg a031x050-00005.jpg
  2. a031w021-00001.jpg a031w021-00002.jpg a031w021-00003.jpg a031w021-00004.jpg a031w021-00005.jpg
  3. a033052-00001.jpg a033052-00002.jpg a033052-00003.jpg a033052-00004.jpg a033052-00005.jpg
复制代码



自己写了一个脚本,只能匹配到整个文件名,
怎么样匹配前面的这几个字符?

  1. i=100001; for f in A*/*.jpg ;do fp=$(dirname "$f") ; echo "$f" "$fp"/"$fp"${i#1}.jpg ; ((i++)); done
复制代码






最佳答案

论坛徽章:
8
CU十四周年纪念徽章
日期:2017-08-28 17:16:1915-16赛季CBA联赛之北控
日期:2018-03-29 11:39:0615-16赛季CBA联赛之上海
日期:2018-05-21 10:46:10技术图书徽章
日期:2018-09-03 13:54:18技术图书徽章
日期:2018-09-03 13:54:2815-16赛季CBA联赛之四川
日期:2020-10-15 09:21:4720周年集字徽章-20	
日期:2020-10-28 13:53:0220周年集字徽章-庆
日期:2020-10-28 14:09:12
2 [报告]
发表于 2018-02-19 21:03 |只看该作者
1、
  1. [root@120 Project]#
  2. [root@120 Project]# pwd
  3. /root/Project
  4. [root@120 Project]# ll A*/*.jpg
  5. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/001.jpg
  6. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/002.jpg
  7. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/a1.jpg
  8. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/a2.jpg
  9. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/b5.jpg
  10. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/001.jpg
  11. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/002.jpg
  12. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/a1.jpg
  13. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/a2.jpg
  14. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/a3.jpg
  15. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/001.jpg
  16. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/002.jpg
  17. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/003.jpg
  18. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/a1.jpg
  19. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/a2.jpg
  20. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/c5.jpg
  21. [root@120 Project]#
  22. [root@120 Project]# sh /root/rename.sh
  23. [root@120 Project]#
  24. [root@120 Project]# ll A*/*.jpg        
  25. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/A031W021-00001.jpg
  26. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/A031W021-00002.jpg
  27. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/A031W021-00003.jpg
  28. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/A031W021-00004.jpg
  29. -rw-r--r-- 1 root root 0 2月  23 14:38 A031W021款名称35(4134)/A031W021-00005.jpg
  30. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/A031X050-00001.jpg
  31. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/A031X050-00002.jpg
  32. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/A031X050-00003.jpg
  33. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/A031X050-00004.jpg
  34. -rw-r--r-- 1 root root 0 2月  23 14:37 A031X050款名称33(6351)/A031X050-00005.jpg
  35. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/A033052-00001.jpg
  36. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/A033052-00002.jpg
  37. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/A033052-00003.jpg
  38. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/A033052-00004.jpg
  39. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/A033052-00005.jpg
  40. -rw-r--r-- 1 root root 0 2月  23 14:38 A033052名称41(4131)/A033052-00006.jpg
  41. [root@120 Project]#
复制代码


2、
  1. [root@120 Project]# cat /root/rename.sh
  2. #!/bin/bash

  3. cd /root/Project

  4. k=100001
  5. for i in A*/*.jpg
  6. do
  7.         #取完整目录名称
  8.         dir=$(awk -F'/|\\.' '{print $1}' <<< $i)

  9.         #更换目录后重置k值
  10.         if [[ $dir != $new_dir ]];then
  11.                 k=100001
  12.         fi

  13.         new_dir=$dir


  14.         #取新名称首部
  15.         f_name=$(awk -F'[^0-9a-zA-Z]' '{print $1}' <<< $i)

  16.         #取新名称尾部
  17.         l_name=$(awk -F'/|\\.' '{print $3}' <<< $i)

  18.         #拼接新的完整名称
  19.         name="$dir/$f_name-${k#1}.$l_name"

  20.         ((k++))

  21.         #重命名
  22.         mv $i $name


  23. done
  24. [root@120 Project]#
复制代码

论坛徽章:
0
3 [报告]
发表于 2018-02-21 08:04 |只看该作者

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2018-02-21 20:08 |只看该作者
回复 1# brokencluster

$ ls A*/*.jpg | awk -vact=no -F"/" '{if($1!=S1)c=0;s1=S1=$1;s2=$2;sub("[^A-Za-z0-9].+$","",s1);new=S1 FS tolower(s1) "-" sprintf("%05d.jpg",++c);cmd="mv \""$0"\" \""new"\"";print cmd;if(act=="yes"){system(cmd);close(cmd)}}'
mv "A031W021款名称35(4134)/001.jpg" "A031W021款名称35(4134)/a031w021-00001.jpg"
mv "A031W021款名称35(4134)/002.jpg" "A031W021款名称35(4134)/a031w021-00002.jpg"
...
mv "A033052名称41(4131)/c5.jpg" "A033052名称41(4131)/a033052-00006.jpg"

$ ls A*/*.jpg | awk -vact=yes -F"/" '{if($1!=S1)c=0;s1=S1=$1;s2=$2;sub("[^A-Za-z0-9].+$","",s1);new=S1 FS tolower(s1) "-" sprintf("%05d.jpg",++c);cmd="mv \""$0"\" \""new"\"";print cmd;if(act=="yes"){system(cmd);close(cmd)}}'
mv "A031W021款名称35(4134)/001.jpg" "A031W021款名称35(4134)/a031w021-00001.jpg"
mv "A031W021款名称35(4134)/002.jpg" "A031W021款名称35(4134)/a031w021-00002.jpg"
...
mv "A033052名称41(4131)/c5.jpg" "A033052名称41(4131)/a033052-00006.jpg"

$ ls A*/*.jpg
A031W021款名称35(4134)/a031w021-00001.jpg
A031W021款名称35(4134)/a031w021-00002.jpg
A031W021款名称35(4134)/a031w021-00003.jpg
A031W021款名称35(4134)/a031w021-00004.jpg
A031W021款名称35(4134)/a031w021-00005.jpg
A031X050款名称33(6351)/a031x050-00001.jpg
A031X050款名称33(6351)/a031x050-00002.jpg
A031X050款名称33(6351)/a031x050-00003.jpg
A031X050款名称33(6351)/a031x050-00004.jpg
A031X050款名称33(6351)/a031x050-00005.jpg
A033052名称41(4131)/a033052-00001.jpg
A033052名称41(4131)/a033052-00002.jpg
A033052名称41(4131)/a033052-00003.jpg
A033052名称41(4131)/a033052-00004.jpg
A033052名称41(4131)/a033052-00005.jpg
A033052名称41(4131)/a033052-00006.jpg

论坛徽章:
0
5 [报告]
发表于 2018-02-22 15:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
6 [报告]
发表于 2018-02-22 16:08 |只看该作者
本帖最后由 chengchow 于 2018-02-22 16:28 编辑

  1. [root@module tmp]# find aa -type f
  2. aa/bb中文/dd
  3. aa/cc中文44(33)/dd
  4. [root@module tmp]# for i in `find aa -type f`;do mv $i `dirname $i`/`dirname $i | sed -rn 's/(^[a-zA-Z0-9/]+).*/\1/p' | tr '/' '-'`-`basename $i`;done
  5. [root@module tmp]# find aa -type f
  6. aa/bb中文/aa-bb-dd
  7. aa/cc中文44(33)/aa-cc-dd
复制代码

论坛徽章:
0
7 [报告]
发表于 2018-02-22 17:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2018-02-23 12:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
9 [报告]
发表于 2018-02-23 14:14 |只看该作者
回复 7# 本友会机友会摄友会
  1. [root@module tmp]# find project -type f
  2. project/A031X050款名称33(6351)/001.jpg
  3. project/A031X050款名称33(6351)/002.jpg
  4. project/A031X050款名称33(6351)/a1.jpg
  5. project/A031W021款名称35(4134)/001.jpg
  6. project/A031W021款名称35(4134)/002.jpg
  7. project/A031W021款名称35(4134)/a1.jpg
  8. [root@module tmp]# for i in `find project -mindepth 1 -type d`;do NUM=1; for j in `find $i -maxdepth 1 -type f`;do mv $j `dirname $j`/`dirname $j | sed -rn 's/^.*\/([a-zA-Z0-9/]+).*/\1/p' | tr '/' '-'`-`basename $j | printf "%05d" $NUM`;let NUM++;done;done
  9. [root@module tmp]# find project -type f
  10. project/A031X050款名称33(6351)/A031X050-00001
  11. project/A031X050款名称33(6351)/A031X050-00002
  12. project/A031X050款名称33(6351)/A031X050-00003
  13. project/A031W021款名称35(4134)/A031W021-00001
  14. project/A031W021款名称35(4134)/A031W021-00002
  15. project/A031W021款名称35(4134)/A031W021-00003
复制代码
  1. #!/bin/bash

  2. for i in `find project -mindepth 1 -type d`;do
  3.         NUM=1
  4.         for j in `find $i -maxdepth 1 -type f`;do
  5.                 mv $j `dirname $j`/`dirname $j | sed -rn 's/^.*\/([a-zA-Z0-9/]+).*/\1/p' | tr '/' '-'`-`basename $j | printf "%05d" $NUM`
  6.                 let NUM++
  7.         done
  8. done
复制代码




论坛徽章:
0
10 [报告]
发表于 2018-02-23 21:13 |只看该作者
回复 9# 龙牙地主天

可以换成小写的吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP