zoukankan      html  css  js  c++  java
  • linux-删除一个目录下的所有文件,但保留某个或者多个指定文件

    Linux:删除一个目录下的所有文件,但保留一个指定文件

    面试题:删除一个目录下的所有文件,但保留一个指定文件

    解答:

    假设这个目录是/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

    方法一:find

    [root@oldboy xx]# ls

    file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

    [root@oldboy xx]# find /xx -type f ! -name "file10"|xargs rm -f 

    [root@oldboy xx]# ls

    file10

    [root@oldboy xx]# find /xx -type f ! -name "file10" -exec rm -f {} ;     

    [root@oldboy xx]# ls

    file10

    这两种一个通过xargs传参,一个通过find的-exec执行命令参数来完成,都算作find

    #感谢两位热心师兄还有老男孩老师的热心解答 C组副组长--张耀 北京-吴晓宇

    老男孩老师点评:此法最佳!必会方法!

    方法二: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

    老男孩老师点评:此法为锦上添花,加分项!

    方法三:开启bash的extglob功能(此功能的作用就是用rm !(*jpg)这样的方式来删除不包括号内文件的文件)

    [root@oldboy xx]# shopt -s extglob

    [root@oldboy xx]# ls

    file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

    [root@oldboy xx]# rm -f !(file10)

    [root@oldboy xx]# ls

    file10

    第三种方法同样感谢热心的师兄 北京-张重生Net

    老男孩老师点评:此法没啥用,讲出来反而会让人觉得你水平不行,一看就是搜索出来的,但是作为知识研习是可以的!此法面试答出来有可能是减分项!

    再补充两种方法(20150802 来自老男孩教育25期课堂)

    方法四:

    find ./ -type f|grep -v "oldboy1"|xargs rm -f

    方法五:

    rm -f `ls|grep -v "oldboy1"`

    从运维角度,任何删除性的操作都应该事先备份后在执行或者确认有备份存在。

  • 相关阅读:
    【转】 java中Class对象详解和类名.class, class.forName(), getClass()区别
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    107. Binary Tree Level Order Traversal II
    109. Convert Sorted List to Binary Search Tree
    108. Convert Sorted Array to Binary Search Tree
    110. Balanced Binary Tree
    STL容器迭代器失效问题讨论
    113. Path Sum II
    112. Path Sum
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/11447288.html
Copyright © 2011-2022 走看看