免费注册 查看新帖 |

Chinaunix

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

使用awk 实现 不同路径相同文件 批量重命名遇到的问题 [复制链接]

论坛徽章:
2
2015年亚洲杯之巴林
日期:2015-02-03 21:13:57数据库技术版块每日发帖之星
日期:2015-08-26 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-25 14:53 |只看该作者 |倒序浏览
现在有这样的文件目录结构

/home/test07/file001/abc.txt
/home/test07/file002/abc.txt
/home/test07/file003/abc.txt
/home/test07/file004/abc.txt
/home/test07/file005/abc.txt
/home/test07/file006/abc.txt
.....

想把路径下面的abc.txt重名成为123.txt
所以需要
mv /home/test07/file001/abc.txt /home/test07/file001/123.txt
mv /home/test07/file002/abc.txt /home/test07/file002/123.txt
mv /home/test07/file003/abc.txt /home/test07/file003/123.txt
.....

我本人想到的想法。

ls /home/test07/file[0-9][0-9][0-9]/abc.txt | awk -F "" {print "mv", $0}

只实现了把mv加上去,重命名后的不知道怎么办了,既
mv /home/test07/file001/abc.txt

问题1
请问各位怎么把后半部分,加上去,正好实现,mv /home/test07/file001/abc.txt /home/test07/file001/123.txt

问题2
如果不按照这个思路各位还有什么其它好方法实现。


多谢。

论坛徽章:
0
2 [报告]
发表于 2010-09-25 15:08 |只看该作者
回复 1# ccchallenge

   
   到test07下
  find . -type d -name "file*"|xargs -I  mv {}/abc.txt {}/123.txt

论坛徽章:
0
3 [报告]
发表于 2010-09-25 15:11 |只看该作者
回复 1# ccchallenge
  1. ls /home/test07/file[0-9][0-9][0-9]/abc.txt |sed 's#\(.*/\).[^/]*#mv & \1123\.txt#' |sh
复制代码

论坛徽章:
2
2015年亚洲杯之巴林
日期:2015-02-03 21:13:57数据库技术版块每日发帖之星
日期:2015-08-26 06:20:00
4 [报告]
发表于 2010-09-25 16:08 |只看该作者
多谢两位回答。问题解决。

不过,楼上的这位写的,看了半天,可是。。。。我不太理解,能拜托高手解释说明一下吗?后面的sed 语句我没看懂。:wink:

自己水平差了点。
越详细越好。

多谢。

论坛徽章:
0
5 [报告]
发表于 2010-09-25 21:17 |只看该作者
去看一下正则表达式吧,两部分,一部分是“字符集合”,另一部分是匹配次数限定符。

论坛徽章:
0
6 [报告]
发表于 2010-09-25 21:53 |只看该作者
find /home/test07/ -name "abc.txt" | xargs rename abc 123

论坛徽章:
0
7 [报告]
发表于 2010-09-26 10:24 |只看该作者
for file in `find /tmp/alen -name abc.txt`;do mv $file `dirname $file`/123.txt;done

论坛徽章:
0
8 [报告]
发表于 2010-09-26 10:34 |只看该作者
find /tmp/alen -name abc.txt|sed 's#\(.*/\).[^/]*#mv & \1123.txt#'|sh

思路不错
具体意思就是用正则将整条记录分成两部份,然后用mv将文件名部分换成123.txt
dragon23452345 该用户已被删除
9 [报告]
发表于 2010-09-26 11:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2010-09-26 16:37 |只看该作者
[root@chen shekk]# ls
g1  g2  g3  g4  g5  g6  g7  g8
[root@chen shekk]# for i in `ls` ; do mv $i $(echo $i | sed 's/g/G/g');done
[root@chen shekk]# ls
G1  G2  G3  G4  G5  G6  G7  G8
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP