首页新闻找找看学习计划

ShellScript:A文件夹和B文件夹,怎样找出只在A里不在B里的文件?

0
悬赏园豆:30 [已解决问题] 解决于 2015-01-27 10:51

请教各路大侠:

文件夹A 和 B

A:file1 file2 file3 AA/fileb1 file5

B: file1 file2 file3 file4

终极目标:删除A文件夹下的 file5 和 子目录AA

米修君的主页 米修君 | 小虾三级 | 园豆:553
提问于:2015-01-26 10:45
< >
分享
最佳答案
1

用rsync(不熟悉rsync的话注意备份,免得错删)

rsync -a --delete $TARGET $SOURCE

 

例:

INSERT$ tree test1
test1
├── aa
│   └── f2
├── f1
├── f2
├── f3
└── f5

1 directory, 5 files
INSERT$ tree test2
test2
├── f1
├── f2
└── f3

0 directories, 3 files

 

 

执行命令之后:

rsync -a --delete ./test2/ ./test1

 

两个文件夹就变一样了。

 

 

在最低限的环境里(常见与windows……)可以用下面的命令:

 

dir1="./test2"; dir2="./test1"; for i in `find $dir1 -type f`;do if [ ! -e ${i//$dir1/$dir2} ]; then echo "delete file..$i"; rm $i; fi; done; for i in `find $dir1 -type d`;do if [ ! -e ${i//$dir1/$dir2} ]; then echo delete dir..$i; rmdir $i; fi; done;
收获园豆:30
akisann | 菜鸟二级 |园豆:341 | 2015-01-26 12:01

谢谢关注

只是我是想在git bash里使用shellscript的方式,没有rsync工具的

米修君 | 园豆:553 (小虾三级) | 2015-01-26 13:44

@米修君: 已更新,慎用……

akisann | 园豆:341 (菜鸟二级) | 2015-01-26 15:16

@akisann:  多谢,是一个思路

米修君 | 园豆:553 (小虾三级) | 2015-01-27 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册