免费注册 查看新帖 |

Chinaunix

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

【已解决】求一个筛选文件夹的shell或者批处理,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-30 18:56 |只看该作者 |倒序浏览
本帖最后由 cocke 于 2011-09-08 13:53 编辑

我有一个文本name.txt,内容如下:
1.txt, one
2.txt ,one
3.txt ,two
11.txt ,three
5.txt ,four
现在想做的是,在本目录下生成one文件夹并将1.txt,2.txt移动到one目录里;
生成two目录,并将3.txt移到two目录里,生成three目录,将11.txt移动到three目录中;生成four目录,将5.txt移动到four目录中。
name.txt里面的内容以逗号为分割符,请各位帮忙,谢谢!

论坛徽章:
0
2 [报告]
发表于 2011-03-30 20:05 |只看该作者
try:

  1. [20:04:56-Bob@hzling20:~/tmp/1]-(1320)No.319->$ cat name.txt
  2. 1.txt, one
  3. 2.txt ,one
  4. 3.txt ,two
  5. 11.txt ,three
  6. 5.txt ,four

  7. [20:05:00-Bob@hzling20:~/tmp/1]-(1321)No.320->$ for i in `awk -F' *, *' '{print $2}' name.txt | uniq`; do mkdir $i && cd $i && touch `grep $i ../name.txt | awk -F' *, *' '{print $1}'` && cd ..; done

  8. [20:05:06-Bob@hzling20:~/tmp/1]-(1322)No.321->$ tree
  9. .
  10. |-- four
  11. |   `-- 5.txt
  12. |-- name.txt
  13. |-- one
  14. |   |-- 1.txt
  15. |   `-- 2.txt
  16. |-- three
  17. |   `-- 11.txt
  18. `-- two
  19.     `-- 3.txt

  20. 4 directories, 6 files
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2011-03-30 20:14 |只看该作者
简单地写写就这样子吧。可以工作。
  1. #!/bin/bash
  2. for dirname in $(awk 'BEGIN{FS=","}{print $2}' name.txt)
  3. do
  4.         mkdir $dirname >/dev/null 2>&1
  5.         awk -v dir=$dirname 'BEGIN{FS=","}{if($2==dir)system("mv "$1" "dir)}' name.txt
  6. done
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-03-30 20:22 |只看该作者
刚没看清楚,那些txt文件是存在的?如果存在的话,就把touch那句改成mv

论坛徽章:
0
5 [报告]
发表于 2011-03-30 21:47 |只看该作者
  1. 4K.Grubby@ubuntu:~$ ls
  2. 11.txt  1.txt  2.txt  3.txt  5.txt  name.txt
  3. 4K.Grubby@ubuntu:~$ cat name.txt
  4. 1.txt, one
  5. 2.txt ,one
  6. 3.txt ,two
  7. 11.txt ,three
  8. 5.txt ,four
  9. 4K.Grubby@ubuntu:~$ awk -F, '{print system("test -d "$2)?"mkdir "$2";mv "$1" "$2:"mv "$1" "$2}' name.txt|sh 2>/dev/null
  10. 4K.Grubby@ubuntu:~$ tree
  11. .
  12. |-- four
  13. |   `-- 5.txt
  14. |-- name.txt
  15. |-- one
  16. |   |-- 1.txt
  17. |   `-- 2.txt
  18. |-- three
  19. |   `-- 11.txt
  20. `-- two
  21.     `-- 3.txt
复制代码

评分

参与人数 1可用积分 +5 收起 理由
where27 + 5 学习了

查看全部评分

论坛徽章:
0
6 [报告]
发表于 2011-03-30 22:04 |只看该作者
bbgg1983 发表于 2011-03-30 21:47



    学习。。。

顺便问个问题:
为什么;号也需要包含在双引号里呢???不然就会syntax error

论坛徽章:
0
7 [报告]
发表于 2011-03-30 22:25 |只看该作者
回复 7# ziyunfei


    图挂了

论坛徽章:
0
8 [报告]
发表于 2011-03-30 22:46 |只看该作者
  1. [root@fc9 aaa]# ls
  2. a
  3. [root@fc9 aaa]# cat a
  4. 1.txt,one
  5. 2.txt,one
  6. 3.txt,two
  7. 11.txt,three
  8. 5.txt,four
  9. [root@fc9 aaa]# IFS=,;while read f d;do [ -d $d ]||mkdir $d;touch $d/$f;done <a
  10. [root@fc9 aaa]# tree .
  11. .
  12. |-- a
  13. |-- four
  14. |   `-- 5.txt
  15. |-- one
  16. |   |-- 1.txt
  17. |   `-- 2.txt
  18. |-- three
  19. |   `-- 11.txt
  20. `-- two
  21.     `-- 3.txt

  22. 4 directories, 6 files
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2011-03-31 11:03 |只看该作者
  1. eval `sed 's:\(^.\+\),\(.\+$\):mkdir \2 ; mv \1 \2;:' name.txt`
复制代码

论坛徽章:
0
10 [报告]
发表于 2011-03-31 11:33 |只看该作者
昭襄王 发表于 2011-03-31 11:03



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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP