免费注册 查看新帖 |

Chinaunix

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

如何批量修改文件名? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-25 10:30 |只看该作者 |倒序浏览
我想要把一个目录下的文件名修改一下,把文件名中的横杠“-”全部改成下划线“_”,该如何写shell脚本?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-08-25 10:43 |只看该作者

如何批量修改文件名?

完整的代碼我就不寫了, 給你一些提示你自己試試看:
1) *-* 就能擴展出所有帶 - 的路逕
2) 丟進 for loop 裡逐個處理
3) tr - _ 就可將 - 換成 _
4) 用 mv 就可改名

若你用 linux 且想用一個命令搞定, 請 man rename .

论坛徽章:
0
3 [报告]
发表于 2004-08-25 12:32 |只看该作者

如何批量修改文件名?

ls|nawk '{if($0~/\-/){printf("mv  %s  ", $0); gsub(/-/,"_"; print}}'

论坛徽章:
0
4 [报告]
发表于 2004-08-25 14:01 |只看该作者

如何批量修改文件名?

1)建立循环,通过basename实现:
for f in *.sql;

do
  base=`basename $f`
  echo $f "------------>"$base.bakkk
  #mv $f $base.bakkk
done


2)若系统没有basename命令,可以通过sed实现:
ls -d *.sql|sed -e 's/.* /mv & &/'-e 's/sql $ /sqlp/'|sh



  1. 请将以上.sql扩宽名,换成你所需的。
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP