原文链接:http://oldboy.blog.51cto.com/2561410/1650380
问题:删除一个目录下的所有文件,但保留一个指定文件
基础环境:
假设这个目录是/xx/,里面有file1,file2,file3..file10 十个文件
[root@oldboy xx]# touch file{1..10}
[root@oldboy xx]# ls
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
1、方法一:find
[root@oldboy xx]# ls
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
1)通过xargs:
[root@oldboy xx]# find /xx -type f ! -name "file10"|xargs rm -f
[root@oldboy xx]# ls
file10
2)通过find自带命令:
[root@oldboy xx]# find /xx -type f ! -name "file10" -exec rm -f {} \;
[root@oldboy xx]# ls
file10
这两种一个通过xargs传参,一个通过find的-exec执行命令参数来完成,都算作find吧
此法最佳!必会方法!
2、方法二:rsync
[root@oldboy xx]# ls
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
[root@oldboy xx]# rsync -az --delete --exclude "file10" /null/ /xx/
[root@oldboy xx]# ls
file10
3、方法三:
find ./ -type f|grep -v "\boldboy1\b"|xargs rm -f
4、方法四:
rm -f `ls|grep -v "\boldboy1\b"`
注意:从运维角度,任何删除性的操作都应该事先备份后在执行或者确认有备份存在。
本文转自1清风揽月1 51CTO博客,原文链接:http://blog.51cto.com/watchmen/1921734,如需转载请自行联系原作者