免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助linux下批量建立文件夹和移动文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-19 17:53 |只看该作者 |倒序浏览
1、/home目录下有一些文件*.gtc,类似1209.gtc,2313.gtc,4324.gtc等,文件名没有规律
2、/home目录还有一个min.ld, lihp.ld,opj.ld和adsd.bc四个文件,其中adsd.bc里面有很多命令,其中两个是source 2341_MN.dfg和load 2341_MN.acd

3、想在/home/jk 文件夹下建立于1中文件名相同的文件夹1209,2313,4324等
4、然后将min.ld, lihp.ld,opj.ld和adsd.bc四个文件文件分别拷贝到上述建立好的文件夹中,然后将adsd.bc文件里的2341字符改为与文件夹相同的字符;再将1209.gtc,2313.gtc,4324.gtc等文件分别拷贝到于其文件名相同等文件夹中。
例如/home/jk中建立了1209文件夹,则1209文件夹中包含有1209.gtc,min.ld, lihp.ld,opj.ld和adsd.bc五个文件,并且adsd.bc文件中两句命令变为source 1209_MN.dfg和load 1209_MN.acd

接着想分别/home/jk/1209,/home/jk/2313和/home/jk/4324等目录下执行一句python命令,该命令为python /home/bin/symj.py -p -i 1209.gtc,该命令等结果会在/home/jk/1209目录生成1209.pr文件夹, /home/jk/2313目录生成2313.pr文件夹和/home/jk/4324等目录生成4324.pr文件夹,即现在的目录变为/home/jk/1209/1209.pr/,/home/jk/2313/2313.pr和/home/jk/4324/4324.pr等。

每个1209.pr文件夹,2313.pr文件夹4324.pr文件夹下会生成好多文件,类似1209_MN.dfg和1209_MN.acd;2313_MN.dfg和2313_MN.acd;4324_MN.dfg和4324_MN.acd,然后想分别拷贝1209_MN.dfg和1209_MN.acd;2313_MN.dfg和2313_MN.acd;4324_MN.dfg和4324_MN.acd到上一级目录即/home/jk/1209,/home/jk/2313和/home/jk/4324等目录下

以1209为例,
/home/jk/1209目录下此时有1209.gtc,min.ld, lihp.ld,opj.ld和adsd.bc五个文件和新增加的1209_MN.dfg和1209_MN.acd两个文件,共7个文件。


以2313为例
/home/jk/2313目录下此时有2313.gtc,min.ld, lihp.ld,opj.ld和adsd.bc五个文件和新增加的2313_MN.dfg和2313_MN.acd两个文件,共7个文件。

然后在每个目录下,例如/home/jk/1209目录下执行一句source命令:例如source adsd.bc

如此循环,怎么做呢?用shell语言,还是别的语言能实现?请教linux下等高手。我等系统为ubuntu 12.04

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
2 [报告]
发表于 2013-05-19 19:47 |只看该作者
本帖最后由 cao627 于 2013-05-19 20:07 编辑

@popelrain写了个片段

  1. .....
  2. for filename in `ls /home/*.gtc`
  3. do
  4. file=${filename##*/}
  5. f=${file%.*}
  6. mkdir /home/jk/$f                   #创建文件夹1209,2313,4324等
  7. cp $filename   /home/jk/$f    #再将1209.gtc,2313.gtc,4324.gtc等文件分别拷贝到于其文件名相同等文件夹中
  8. cd /home/jk/$f                      #切换进创建的目录
  9. cp /home/lihp.ld  .
  10. cp /home/opj.ld   .   
  11. cp /home/min.ld  .  
  12. cp /home/absd.bc .         #然后将min.ld, lihp.ld,opj.ld和adsd.bc四个文件文件分别拷贝到上述建立好的文件夹中
  13. sed  -i “s/[0-9]*\(_MN\)/$f\1/g”  absd.bc     #adsd.bc文件里的2341字符改为与文件夹相同的字符
  14. 执行pyth语句
  15. .....

  16. done
复制代码

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
3 [报告]
发表于 2013-05-19 22:08 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2013-05-19 23:18 |只看该作者
回复 2# cao627

非常感谢这位兄弟,代码很好。就是sed那句好像不管用


   

论坛徽章:
0
5 [报告]
发表于 2013-05-20 01:18 |只看该作者
回复 2# cao627
所有代码都可以用,非常感谢!好人啊!


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2013-05-20 09:25 |只看该作者
回复 2# cao627


几个cp可以合并到一起
  1. cp $filename /home/lihp.ld /home/opj.ld /home/min.ld /home/absd.bc /home/jk/$f
复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
7 [报告]
发表于 2013-05-20 17:20 |只看该作者
@Shell_HAT是的

论坛徽章:
0
8 [报告]
发表于 2016-09-16 16:32 |只看该作者
sed  -i “s/[0-9]*\(_MN\)/$f\1/g”  absd.bc     #adsd.bc文件里的2341字符改为与文件夹相同的字符

怎么理解

论坛徽章:
0
9 [报告]
发表于 2016-09-17 10:32 |只看该作者
先收集一下/home/*.gtc
cd /home/
[root@localhost home]# ls *.gtc >~/1.txt
[root@localhost home]# cat ~/1.txt
1209.gtc
2313.gtc
4324.gtc

然后是脚本
#! /bin/bash
while read line ;
   do
   num=`echo $line |awk -F"." '{print $1}'`
   mkdir -p /home/jk/$num
   cd /home/
   cp min.ld lihp.ld opj.ld adsd.bc $line  /home/jk/$num
   sed -i 's#2341#'$num'#'  /home/jk/$num/adsd.bc
   cd /home/jk/$num/
   python /home/bin/symj.py -p -i $line  #python命令可能需要绝对路径
   cp /home/jk/$num/${num}.pr/${num}_MN.dfg /home/jk/$num/
   cp /home/jk/$num/${num}.pr/${num}_MN.acd /home/jk/$num/
   cd /home/jk/$num/
   source adsd.bc
done</root/1.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP