免费注册 查看新帖 |

Chinaunix

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

怎样移动包含目录名的文件到相应的目录中去呢?【已解决】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-21 13:58 |只看该作者 |倒序浏览
本帖最后由 abiao00000 于 2012-03-22 12:39 编辑

:wink: 各位大侠好,我想写个脚本,把当前目录下的包含子目录名称的文件移动到相应的子目录中去,折腾了半天还是没搞定,求大虾指导,谢谢了。比如我当前目录下有一堆文本文件和一堆非文本文件名称都以xxx.*,yyy.*开头,其中xxx.txt文件第一行内容第一列包含字符"111",yyy.txt文件第一行包含"222"。执行脚本之后,先根据xxx.txt和yyy.txt第一行第一列内容建立两个子目录111和222,然后将对应的xxx.*文件全部移动到111目录下,将相应的yyy.*文件全部移动到222目录下。我写了一点点也有基本思路,但是整不出来:

#!/bin/bash
mkdir  `head -1 *.txt|awk '{print $1}'`  #根据xxx.txt和yyy.txt的第一行第一列字符建立两个文件夹111和222
rm  -rf "==>"
var_dir=`ll |grep ^d|awk '{print $9}'` #建立的文件夹名称111和222赋予变量var_dir
var_file=ls* #将文件名赋予变量var_file
if(head -1 xxx.txt|awk '{print $1}'=vardir) #判断*.txt文件第一行第一列名称与文件夹名是否一致
do
mv  xxx.* 111  #移动相应文件到对应的文件夹中
fi

论坛徽章:
0
2 [报告]
发表于 2012-03-21 15:27 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2012-03-21 17:42 |只看该作者
没救了么?

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

论坛徽章:
0
5 [报告]
发表于 2012-03-21 19:58 |只看该作者
不是吧,说很清楚了啊。就是想把当前目录下的一些文件分类,先根据文本文件xxx.txt第一行第一列的字符“111”新建目录111,然后把以xxx开头的文件xxx.*都移动到111这个目录中。同理根据yyy.txt第一行第一列的字符222新建目录222,然后将以yyy开头的所有文件yyy.*都移动到222这个目录中。。。回复 4# zooyo


   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2012-03-21 19:58 |只看该作者
好复杂。

论坛徽章:
0
7 [报告]
发表于 2012-03-21 20:02 |只看该作者
  1. #!/bin/bash

  2. for txt in *.txt
  3. do
  4.         dirname=$(sed -n '1p' $txt)
  5.         mkdir -pv $dirname 1>>verbose.log 2>&1
  6.         mv -v $txt $dirname 1>>verbose.log 2>&1
  7. done
复制代码
不知道这个是不是符合楼主要求。

论坛徽章:
0
8 [报告]
发表于 2012-03-22 07:47 |只看该作者
  1. #!/bin/sh

  2. move_file(){

  3. FILE=$1
  4. shift
  5. DIR=$1

  6. echo "mv $FILE $DIR"
  7. mv $FILE $DIR

  8. }

  9. for i in *.txt
  10. do
  11.         DIR=$(head -1 $i|awk '{print $1}')
  12.         if [ -d ${DIR} ];then
  13.           move_file $i ${DIR}
  14.         else
  15.           mkdir ${DIR}
  16.           move_file $i $DIR
  17.         fi
  18. done
复制代码
回复 1# abiao00000


   

论坛徽章:
0
9 [报告]
发表于 2012-03-22 11:46 |只看该作者
本帖最后由 abiao00000 于 2012-03-22 11:47 编辑

回复 8# Perl_Er

谢谢,我简化了下:
   #!/bin/bash
  2 for i in *.txt
  3 do
  4 DIR=$(head -1 $i|awk '{print $1}')
  5 FILE=${i/.txt/.*}
  6 echo "move $FILE to $DIR"
  7 mkdir $DIR
  7 mv $FILE ${DIR}
  8 done

论坛徽章:
0
10 [报告]
发表于 2012-03-22 11:48 |只看该作者

RE: 怎样移动包含目录名的文件到相应的目录中去呢?

谢谢,已经解决回复 7# jiejie455


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP