求一个复制文件的shell脚本

luomuxiaoxiao98 2013-12-28 08:30:06
如题:需要这样一个脚本,能够将一个目录下(包括其所有子目录)的*.c,*.h文件复制到另外一个目录下,生成对应目录下的*_c.log和*_h.log文件。以及一个还原回去的脚本,谢谢啦!
...全文
498 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyuping_2007 2014-01-23
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
进入原目录执行 for i in `ls *`; do cp $i /目的目录/${i%.*}_${i##*.}.log; done
很厉害
Ghostbaby 2014-01-21
  • 打赏
  • 举报
回复
引用 4 楼 ljc007 的回复:
备份
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $SRC_FOLDER/*.c $SRC_FOLDER/*.h; do
    fileName=`basename $i`
    cp -p $i $DST_FOLDER/${fileName%.*}_${fileName##*.}.log
done
还原
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $DST_FOLDER/*.log; do
    fileName=`basename $i`
    fileExt=${fileName%.log}
    filePre=${fileName%_?.log}
    cp -p $i $SRC_FOLDER/${filePre}.${fileExt##*_}
done
nice,我说原来windows版的版主哪里去了! 这类脚本还是加入些日志功能吧,误操作之后起码有记录。
luomuxiaoxiao98 2014-01-21
  • 打赏
  • 举报
回复
引用 5 楼 orangepigmm 的回复:
[quote=引用 4 楼 ljc007 的回复:] 备份
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $SRC_FOLDER/*.c $SRC_FOLDER/*.h; do
    fileName=`basename $i`
    cp -p $i $DST_FOLDER/${fileName%.*}_${fileName##*.}.log
done
还原
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $DST_FOLDER/*.log; do
    fileName=`basename $i`
    fileExt=${fileName%.log}
    filePre=${fileName%_?.log}
    cp -p $i $SRC_FOLDER/${filePre}.${fileExt##*_}
done
nice,我说原来windows版的版主哪里去了! 这类脚本还是加入些日志功能吧,误操作之后起码有记录。[/quote] 能在帮忙修改一下吗?谢谢啦!
luomuxiaoxiao98 2014-01-21
  • 打赏
  • 举报
回复
引用 4 楼 ljc007 的回复:
备份
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $SRC_FOLDER/*.c $SRC_FOLDER/*.h; do
    fileName=`basename $i`
    cp -p $i $DST_FOLDER/${fileName%.*}_${fileName##*.}.log
done
还原
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $DST_FOLDER/*.log; do
    fileName=`basename $i`
    fileExt=${fileName%.log}
    filePre=${fileName%_?.log}
    cp -p $i $SRC_FOLDER/${filePre}.${fileExt##*_}
done
我可能没有表达清楚,源文件夹中可能包含.c .h文件,也可能包含文件夹,如果包含文件夹的话,要能按上述规则递归这个文件夹。请在帮忙修改一下啦,谢谢!我用C语言写了一个这种程序,超级麻烦,而且还有一些bug。希望shell脚本能够简单点。
ljc007 2014-01-20
  • 打赏
  • 举报
回复
备份
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $SRC_FOLDER/*.c $SRC_FOLDER/*.h; do
    fileName=`basename $i`
    cp -p $i $DST_FOLDER/${fileName%.*}_${fileName##*.}.log
done
还原
#!/bin/bash
SRC_FOLDER=/var/tmp/folder1
DST_FOLDER=/var/tmp/folder2
for i in $DST_FOLDER/*.log; do
    fileName=`basename $i`
    fileExt=${fileName%.log}
    filePre=${fileName%_?.log}
    cp -p $i $SRC_FOLDER/${filePre}.${fileExt##*_}
done
Liteboy 2014-01-19
  • 打赏
  • 举报
回复
佩服rucypli!!!
Carl_CCC 2013-12-29
  • 打赏
  • 举报
回复
cp 最好带上 -a
rucypli 2013-12-29
  • 打赏
  • 举报
回复
进入原目录执行 for i in `ls *`; do cp $i /目的目录/${i%.*}_${i##*.}.log; done

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧