Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2044919
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-05-09 10:14:30


新手




CU编号: 1241040
注册:2009-3-29
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 15:09 
mv [^1-3]* a

这个是我想到的,可是除了目录,其他文件也都移了过去。。

有什么方法只移动目录?



您对本贴的看法:
| |

风云使者




CU编号: 545429
注册:2007-3-30
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 15:14 
方法错了。。。答案在6楼

[ 本帖最后由 ztj2247 于 2009-5-7 15:49 编辑 ]



您对本贴的看法:
| |

新手




CU编号: 1241040
注册:2009-3-29
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 15:29 


QUOTE:
原帖由 ztj2247 于 2009-5-7 15:14 发表


mv[^1-3]* a &&rm -rf 1 2 3&& mkdir 1 2 3

没明白什么意思。。~干嘛mv 1 2 3 然后又重新mkdir 1 2 3 ?



您对本贴的看法:
| |
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
CU编号: 465018
注册:2006-9-13
最后登录: 2009-05-08
帖子:
精华:0







来自:长春
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 15:38 
回复 #1 从未被和谐 的帖子

mv [^1-3]*/ a

但这个不准确,11、1a 这种也不会移。



您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
| |

新手




CU编号: 1241040
注册:2009-3-29
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 15:45 


QUOTE:
原帖由 ly5066113 于 2009-5-7 15:38 发表
mv [^1-3]*/ a

但这个不准确,11、1a 这种也不会移。

是啊,所以特来求教。。想了半天没想明白这该怎么写。



您对本贴的看法:
| |

风云使者




CU编号: 545429
注册:2007-3-30
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 15:48 
[ haha]#ls
1  2  3
[ haha]#cd 1/
[ 1]#ls
[ 1]#cd ..
[ haha]#cd 2
[ 2]#ls
a  b  c
[ 2]#cd ..
[ haha]#cd 3
[ 3]#ls
d  e  f
[ 3]#cd ..
[ haha]#ls
1  2  3
[ haha]#find ./ -type d |sed 's/.\//mkdir -p .\/1\//' |sh
[ haha]#cd 1/
[ 1]#ls
1  2  3
[ 1]#cd 2/
[ 2]#ls
[ 2]#cd 3

琢磨琢磨吧 主要是那句SED

再优化下
find ./ -type d |sed 's/.\//mkdir -p .\/1\//' |sh && rm -rf ./1/1

[ 本帖最后由 ztj2247 于 2009-5-7 15:51 编辑 ]



您对本贴的看法:
| |
(狼烟)
精灵王
披着狼皮的羊



CU编号: 547805
注册:2007-4-5
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 15:55 


CODE:
find . -type d -name "[^1-3a]" -maxdepth 1 -prune | xargs -i mv {} a




您对本贴的看法:
| |
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
CU编号: 465018
注册:2006-9-13
最后登录: 2009-05-08
帖子:
精华:0







来自:长春
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 16:14 
回复 #5 从未被和谐 的帖子

find ! -name "[123]" -type d -maxdepth 1 -exec mv {} a \;



您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
| |

精灵王
精灵王?



CU编号: 199500
注册:2004-11-15
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 16:43 
这样不知道可不可以?
ls -l|grep ^d|grep [^123]|xargs xxx



您对本贴的看法:

__________________________________

正则 shell买什么书好?
来这里混混,2个月速成班,还不收费!

| |

新手




CU编号: 1241040
注册:2009-3-29
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 16:48 
不看不知道,一看下一跳。以前只知道简单的。。没想到find还有这么多高级的用法。原来"[^1-3a]" 比[^1-3a]*更准确的匹配单个字符的目录名,学习了。在发别人写的。。留作纪念,重新学习了find。。谢谢诸位。
find . \( -path "./1" -o -path "./2" -o -path "./3" -o -path "./a"  \) -prune -a -type d -o -exec mv {} a \;

[ 本帖最后由 从未被和谐 于 2009-5-7 16:52 编辑 ]



您对本贴的看法:
| |

精灵王



CU编号: 451045
注册:2006-8-7
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 19:06 
除了a, b, c三个目录,当前目录下面的所有目录都移到 /dest/path/ 目录下面。

find . -maxdepth 1 -mindepth 1 -type d | grep -vE "./a|./b|./c" | xargs -I '{}' mv '{}'  /dest/path/



您对本贴的看法:
| |

精灵



CU编号: 645773
注册:2007-11-24
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-7 22:42 
看错了

[ 本帖最后由 vbs100 于 2009-5-7 22:54 编辑 ]



您对本贴的看法:
| |

侠客




CU编号: 791268
注册:2008-12-5
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 11:31 


QUOTE:
原帖由 kwokcn 于 2009-5-7 15:55 发表

find . -type d -name "[^1-3a]" -maxdepth 1 -prune | xargs -i mv {} a

好像要加個*吧﹐不然有些.*的文件找不到。
find . -type d -name "[^1-3a]*" -maxdepth 1 -prune | xargs -i mv {} a



您对本贴的看法:
| |
(狼烟)
精灵王
披着狼皮的羊



CU编号: 547805
注册:2007-4-5
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 11:42 


QUOTE:
原帖由 star_wm_craft 于 2009-5-8 11:31 发表

好像要加個*吧﹐不然有些.*的文件找不到。
find . -type d -name "[^1-3a]*" -maxdepth 1 -prune | xargs -i mv {} a

前面是按帖子题目写的,“除了1,2,3这三个目录”。
刚发现,-prune是多余的…… - -



您对本贴的看法:
| |

风云使者



CU编号: 75702
注册:2003-7-25
最后登录: 2009-05-08
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 17:07 
给你这个帖子,仅供参考




您对本贴的看法:

__________________________________

不愿意承认xx的缺点,光说论点,说不出论据,总是在转移话题+狡辩 的帖子将被我鄙视!
可以从你帖中看到你的身份。工程师侧重于应用,稳定,简单。研究者侧重于实现,会说明过程。架构师侧重于原理。
| |

精灵



CU编号: 645773
注册:2007-11-24
最后登录: 2009-05-09
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-5-8 17:28 
回复 #15 aleng 的帖子

参考什么啊 不懂
来一个不用find的方法  可能需要打开 shopt -s  extglob

ls -dF !([abc1]) | grep '\/$' | xargs -i mv {} 1
复杂的目录
ls -dF !(fwd|gwe|bae) | grep '\/$' | xargs -i mv {} 1



您对本贴的看法:
| |
阅读(428) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~