免费注册 查看新帖 |

Chinaunix

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

求助一SHELL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-06 20:54 |只看该作者 |倒序浏览
5可用积分

  1. 实现一功能,一个文件夹下有很多文件,把文件名中某些字符串替换成指定的字符串,
  2. 例如:
  3.   有文件:CT4501.CC
  4.                CT4501ms.CC
  5.                CT4501mx.CC
  6. 重命名成:
  7.           CT2788.CC
  8.                CT2788ms.CC
  9.                CT2788mx.CC
  10. 要求脚本输入: sh src obj
  11.            src 为文件名中要替换的字符
  12.        obj  为替换原字符串的字符
  13. 谢谢了!
复制代码

最佳答案

查看完整内容

for file in `ls *$1*`; do newfile=`echo $file | sed “s/$1/$2/”` mv $file $newfiledone[ 本帖最后由 WinnerBoy 于 2009-1-6 21:33 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-01-06 20:54 |只看该作者
for file in `ls *$1*`; do
     newfile=`echo $file | sed “s/$1/$2/”`
     mv $file $newfile
done

[ 本帖最后由 WinnerBoy 于 2009-1-6 21:33 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2009-01-06 21:02 |只看该作者
rename 'src' 'obj' *.CC

论坛徽章:
0
4 [报告]
发表于 2009-01-06 21:03 |只看该作者

回复 #3 ly5066113 的帖子

这个太强大了,我喜欢。

论坛徽章:
0
5 [报告]
发表于 2009-01-06 21:06 |只看该作者
原帖由 ly5066113 于 2009-1-6 21:02 发表
rename 'src' 'obj' *.CC


有些系统没有rename命令

论坛徽章:
0
6 [报告]
发表于 2009-01-06 21:09 |只看该作者
1 #!/bin/sh
  2 for i in *
  3 do
  4    echo "$i"
  5    name=`echo $i | sed "s@$1@$2@g"`
  6    echo "$name"
  7    mv $i $name 2>/dev/null
  8 done
这样可以吗?

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
7 [报告]
发表于 2009-01-06 21:10 |只看该作者

  1. #!/bin/sh

  2. if [ ${#@} -ne 2 ]; then
  3.     echo "Usage: $0 src dst"
  4.     exit 1
  5. fi

  6. src="$1"
  7. dst="$2"
  8. for file in `ls`
  9. do
  10.     #echo "${file}"
  11.     if [[ "${file}" = *${src}* ]]; then
  12.         newname="${file/$src/$dst}"
  13.         echo "rename ${file} as ${newname}"
  14.         /bin/mv -f "${file}" "${newname}"
  15.     fi
  16. done
复制代码

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
8 [报告]
发表于 2009-01-06 21:11 |只看该作者

回复 #5 WinnerBoy 的帖子

楼主也没说什么环境呀,谁知道什么命令有,什么命令没有。

PS:你2楼的代码有问题的,sed 's/$1/$2/' 这个sed没效果的。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
9 [报告]
发表于 2009-01-06 21:13 |只看该作者

回复 #7 ynchnluiti 的帖子

想写的通用不是那么容易的。

[[ "${file}" = *${src}* ]] #这个应该用==
${file/$src/$dst}

这种写法bash下才有的。

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
10 [报告]
发表于 2009-01-06 21:17 |只看该作者
原帖由 ly5066113 于 2009-1-6 21:13 发表
想写的通用不是那么容易的。

[[ "${file}" = *${src}* ]] #这个应该用==
${file/$src/$dst}

这种写法bash下才有的。

谢谢指教,我写过的脚本不多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP