免费注册 查看新帖 |

Chinaunix

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

shell脚本求助!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-17 16:32 |只看该作者 |倒序浏览
我想抽取出一个文件夹(有多重目录)下的所有.c和.h文件,放到另一个文件夹下,但是要保存目录信息,shell脚本该怎样写呢?


例如:目录src下有文件./a/b.c和./d.c,抽取到dst目录下,得到dst/a/b.c和dst/d.c

论坛徽章:
0
2 [报告]
发表于 2010-03-17 16:39 |只看该作者
将目录复制一个,删除其中所有不是 *.c 或 *.h 的文件

论坛徽章:
0
3 [报告]
发表于 2010-03-17 16:48 |只看该作者
man cp
+
find + xargs

论坛徽章:
0
4 [报告]
发表于 2010-03-17 16:56 |只看该作者
将目录复制一个,删除其中所有不是 *.c 或 *.h 的文件
redspider 发表于 2010-03-17 16:39


那具体改怎样写呢,对shell不熟,谢谢!

论坛徽章:
0
5 [报告]
发表于 2010-03-17 17:00 |只看该作者
  1. find ./  -regex  '.*\.\(c\|h\)' -exec cp --parents {} dst \;
复制代码
如果你的cp没有--parents 参数,那就稍麻烦点,需要自己写个shell来创建对应文件夹再cp过去

论坛徽章:
0
6 [报告]
发表于 2010-03-17 17:18 |只看该作者
回复 5# Moerae


    这个是将源目录保存下来,可我感觉LZ的意思是想让文件名里包括路径~ 我刚才试了一下~那个/路径符号不能当文件名。转义也不行~
LZ的需求是这样的吗

论坛徽章:
0
7 [报告]
发表于 2010-03-17 17:22 |只看该作者
感谢大家
我写了一个,大家看看正确吗?
  1. #!/bin/bash
复制代码
  1. for file in `find .`
复制代码
  1. do
复制代码
  1.     if [[ ($file == *.c) || ($file == *.h) ]]; then
复制代码
  1.         cp --parent $file dst
复制代码
  1.     fi
复制代码
  1. done
复制代码

论坛徽章:
0
8 [报告]
发表于 2010-03-17 17:25 |只看该作者
回复 7# aimmit


    你的意思不是想让文件带着路径吗?
我理解的是假如文件是a.txt
然后你想要的效果是tmp/a.txt
难道我理解错了 ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP