免费注册 查看新帖 |

Chinaunix

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

工作中遇到的文件到同名目录的移动或拷贝问题(要求BASH shell脚本解决),高手请进 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-27 10:57 |只看该作者 |倒序浏览
我们公司有一批文件要拷贝到IDC机房,这批文件名如下:
        211101.wmv
            211103.wmv
            923111.wmv
            821259.wmv
            ...
   类似的以数字命名的WMV文件
  IDC机房已经有相对应的目录,要求同名的文件拷贝到同名目录中去,目录如下
        211101
            211103
            923111
            821259
            ...
并且目录中已经有上述的文件,但文件的字节数为0
公司要求把同名文件拷贝或移动到同名目录下覆盖同名的文件,我想使用bash shell脚本来做,谁能给个建议

论坛徽章:
0
2 [报告]
发表于 2007-07-27 11:14 |只看该作者

回复 #1 zhaoyingfei 的帖子


  1. #!/bin/bash

  2. fromdir=$1
  3. todir=$2
  4. cd $fromdir
  5. for i in $(ls *.wmv); do
  6.         base=${i%%.*}
  7.         mv -f $i $todir/$base/
  8. done

  9. usage:  scriptname fromdir todir
复制代码

[ 本帖最后由 wawxdyy 于 2007-7-27 11:22 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-07-27 11:45 |只看该作者
非常感谢wawxdyy ,不过我还有问题要请教,刚刚我按照你写的测试了一下,出了一些错误提示,但是我没有找到原因,麻烦你再帮忙看看,运行后wawxdyy
提示:

mv: cannot move `2111.wmv' to `b/2111/2111.wmv': No such file or directory
mv: cannot move `2112.wmv' to `b/2112/2112.wmv': No such file or directory
mv: cannot move `2113.wmv' to `b/2113/2113.wmv': No such file or directory
mv: cannot move `2114.wmv' to `b/2114/2114.wmv': No such file or directory
我是创建了两个目录 a   和  b ,a里面放的是wmv的文件,b里面放的是wmv文件相对应的同名目录
a和b 都放在test目录下,我把你脚本命名为copy也放在test下,运行./copy a b之后就出现这个错误,
a和b目录下的东西我都检查了,没有问题,a下面放的文件,b下面放的目录,再帮偶看看,谢谢

论坛徽章:
0
4 [报告]
发表于 2007-07-27 11:51 |只看该作者
a和b在同一层次上,你那样当然找不到b了,你 应该用绝对路径.或者把

  1. mv -f $i $todir/$base/
复制代码

改为

  1. mv -f $i ../$todir/$base/
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-07-27 11:54 |只看该作者
谢谢,终于搞定了,好长时间没有碰这个连路径都没有观察出来

论坛徽章:
0
6 [报告]
发表于 2007-07-27 11:59 |只看该作者
呵呵,别客气,这东西就得用,不用忘得快

论坛徽章:
0
7 [报告]
发表于 2007-07-27 12:05 |只看该作者
我要来做恶人。
LZ先只要建议,wawxdyy却大包大揽奉上代码,LZ索性把错误发过来,完全依赖wawxdyy替他完成一件工作任务了。
如果是我,我会建议LZ贴上自己的脚本上来,我会看情况给些参考意见。

论坛徽章:
0
8 [报告]
发表于 2007-07-27 12:50 |只看该作者
呵呵,接受批评,下回注意

论坛徽章:
0
9 [报告]
发表于 2007-07-29 18:20 |只看该作者
说的有道理,其实遇到问题,解决后要总结一下的,其实这个就是写个for语句的事吧?

论坛徽章:
0
10 [报告]
发表于 2007-07-29 22:42 |只看该作者
晕~~~
我 现在只是大概能看懂#!/bin/bash

fromdir=$1
todir=$2
cd $fromdir
for i in $(ls *.wmv); do
        base=${i%%.*}
        mv -f $i $todir/$base/
done

usage:  scriptname fromdir todir
这些,让我 自己写有困难~~~
以后一定加倍努力~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP