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 "\boldboy1\b"|xargs rm -f

方法五:

rm -f `ls|grep -v "\boldboy1\b"`

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

linux-删除一个目录下的所有文件,但保留某个或者多个指定文件的更多相关文章

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

    面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 十个文件 [root@oldboy xx]# touch ...

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

    面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10  十个文件 [root@oldboy xx]# touc ...

  3. python 删除一个目录下的所有文件

    一个目录下有文件,文件夹,文件夹里又有文件.文件夹....用python脚本,实现,递归删除一个目录下的所有文件: 目录结构如下: 其中我们要删除所有文件 代码实现如下: import os CUR_ ...

  4. PHP删除一个目录下的所有文件,不删除文件夹

    /*删除指定目录下的文件,不删除目录文件夹*/ function delFile($dirName){ if(file_exists($dirName) && $handle=open ...

  5. Java_io_02_从一个目录拷贝文件到另一个目录下

    java从一个目录拷贝文件到另一个目录下   http://www.cnblogs.com/langtianya/p/4857524.html ** * 复制单个文件 * @param oldPath ...

  6. Linux递归解压缩一个目录下的全部文件

    gunzip -r hongchangfirst/data 怎样递归删除那些剩余的非log结尾的文件? 先列出确认一下: find hongchangfirst/data -type f ! -nam ...

  7. linux列出一个目录及其子目录下面的某种类型的文件

    linux列出一个目录及其子目录下面的某种类型的文件 作者:smarteng ⁄ 时间:2009年07月09日 ⁄ 分类: Linux命令 ⁄ 评论:0 怎么样把,一个目录及其所有的子目录下面的某种类 ...

  8. linux上如何快速删除一个目录

    在linux中删除一个目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可解决.直接rm就可以了,不过要加两个参数-rf 即:rm -rf   ...

  9. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

随机推荐

  1. nginx 动态黑名单

    原理: 根据nginx 访问日志记录发现可疑的或者不正常的访问记录记录然后自动添加到nginx的黑名单 起到阻止的作用  可以作为防范少量的ddos攻击 1.首先要格式化nginx的日志(相关内容可以 ...

  2. yum安装nginx添加upstream_check_module模块

    下载模块 upstream_check_module 查看yum安装nginx版本信息 # nginx -V nginx version: nginx/1.17.0 built by gcc 4.8. ...

  3. HttpClient学习(三)—— AsyncHttpClient使用

    一.介绍 This class support asynchronous and synchronous HTTP requests. AsyncHttpClient 支持同步.异步Http请求. 二 ...

  4. OpenResty之 limit.count 模块

    原文: lua-resty-limit-traffic/lib/resty/limit/count.md 1. 示例 http { lua_shared_dict my_limit_count_sto ...

  5. js回车键事件

    js回车键事件 一.总结 一句话总结: $("#focus").keypress(function(event){if(event.which === 13) { /*点击回车要执 ...

  6. 连接池设置导致的“血案” 原创: 一页破书 一页破书 5月6日 这个问题被投诉的几个月了,一直没重视——内部客户嘛😿 问题现象: 隔几周就会出现 A服务调用B服务超时 脚趾头想就是防火墙的问题,A、B两服务之间有防火墙 找运维查看防火墙日志确实断掉了tcp连接,但是是因为B服务5分钟没有回包,下面这个表情就是我当时的心情——其实我们在防火墙、A服务、B服务都抓包了,几十个G的t

    连接池设置导致的“血案” 原创: 一页破书 一页破书 5月6日 这个问题被投诉的几个月了,一直没重视——内部客户嘛

  7. SOCKET_CONNECT_TIMEOUT is the timeout for the connection to be established and SOCKET_TIMEOUT

    https://github.com/niwinz/django-redis/blob/master/doc/content.adoc#32-socket-timeout 3.2. Socket ti ...

  8. Intel AI Cloud 使用

    1.申请AI Cloud A ‘training-ready’ hardware like Amazon® EC2, Intel® AI DevCloud, or a GPU-based system ...

  9. java获取两个日期之间的所有日期

    java获取两个日期之间的所有日期   解决方法: 1.核心方法 private List<String> getBetweenDates(String start, String end ...

  10. ubuntu18.04 install rar

    sudo apt-get update #如果好久没有更新资源建议update一次 sudo apt-get install rar #安装rar sudo apt-get install unrar ...