设为首页 收藏本站
查看: 1074|回复: 0

linux shell下除了某个文件外的其他文件全部删除的命令

[复制链接]

尚未签到

发表于 2018-8-27 07:08:01 | 显示全部楼层 |阅读模式
Linux反选删除文件
  最简单的方法是
  # shopt -s extglob      (打开extglob模式)
  # rm -fr !(file1)
  如果是多个要排除的,可以这样:
  # rm -rf !(file1|file2)

Linuxrm删除指定文件外的其他文件方法汇总
  一、Linux下删除文件和文件夹常用命令如下: 删除文件: rm file
  删除文件夹: rm -rf dir
  需要注意的是, rmdir 只能够删除 空文件夹。 二、删除制定文件(夹)之外的所有文件呢?
  1、方法1,比较麻烦的做法是:
  复制需要保留的文件到其他文件夹,然后将该目录删除, 然后将需要保留的移动 回来。 mv keep ../ #保留文件(夹) keep
  rm -rf * #删除当前文件夹里的所有文件 mv ../keep ./ #将原来的东西移动回来
  2、方法2,需要在当前文件夹中进行:
  rm -rf !(keep) #删除keep文件之外的所有文件
  rm -rf !(keep1 | keep2) #删除keep1和keep2文件之外的所有文件
  3、方法3,当前文件夹中结合使用grep和xargs来处理文件名: ls | grep -v keep | xargs rm #删除keep文件之外的所有文件
  说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。
  好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理。
  4、方法4,使用find命令代替ls,改进方法3从而能够处理制定文件夹的文件:
  find ./test/ | grep -v keep | xargs rm #删除当前test文件夹中keep文件之外的所有文件
  说明,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够,无法排除指定文件名。
  5、方法5,直接使用find命令删除其他文件:
  find ./ -name '[^k][^e][^e][^p]*'  -exec rm -rf {} \; #删除keep以外的其他文件。 find ./ -name '[^k][^e][^e][^p]*'  | xargs rm -rf  #删除keep以外的其他文件。推荐!
  说明:上面第二行的代码效率高些,原因在于删除多个文件时 -exec会启动多个进程来处理,而xargs会启动一个rm进程来处理。
  关于find 执行命令的效率和借用xargs启动的命令效率的比较,详情请参考:http://www.linuxsir.org/main/?q=node/137
  Linux文件查找命令find,xargs详述  http://www.linuxsir.org/main/?q=node/137 本文转载自:http://blog.sina.com.cn/s/blog_70ffb5c501011rrk.html
rm删除除去指定文件的剩余所有文件  (rm 反向删除)
  zhou@zhou:~/LinuxC/file/test$ ls
  1  23sdfwe 88888888  aabb ag   ghdda    mmm
  2 3       aaaaaaaa abc  asdg  llllllll wwwww
  zhou@zhou:~/LinuxC/file/test$
  然后我想删除除了包含字符串aa外所有的文件,也就是想留下aabb,aaaaaaaa,这两个文件,其他的全部删除
  下面是我的命令:
  zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v"aa"`
  zhou@zhou:~/LinuxC/file/test$ ls
  aaaaaaaa  aabb
  zhou@zhou:~/LinuxC/file/test$
  所以了,成功了。
  简单的解释一下那条命令吧:rm 删除后面指定的文件
  `ls | grep -v "aa" ` 记得外面是反引号(反引号的位置就在标准键盘的数字1的左边)
  ls:查看当前目录下所有的文件,使用grep命令过滤一下grep -v "aa" 就是找出字符串中不带“aa”的。
  整体再顺一下:列出文件名不带“aa”串的文件,然后删除他们。OK。
  其实说起来简单,当时我也做了好长时间,因为以前没怎么接触grep,因此一开始我想到的办法是使用正则表
  达式,但是在做的过程中突然发现了grep使个不错的东西,因此就使用了。
  上面的命令使删除带有“aa”串的文件,那如果我只想留下文件aa呢?很简单
  zhou@zhou:~/LinuxC/file/test$rm `ls | grep -v"^aa$" `
  在aa前面加上^,后面加上$表示结束符的意思,这个就是完全匹配了。
  好了,就这么多。但愿以后能用到这个有用的命令
  转自:http://blog.sina.com.cn/s/blog_67e34ceb01014930.html
linux 删除其他文件
http://zhidao.baidu.com/link?url=uvHfrb3kSnM_8p5ILhZyc39U0h3md-Ncrm3iaygeYTLU-zjthNBlqO674VulVGTnPiNcl2nj7wo5vn08N4481_
  求教 linux centos我想删除某目录中文件名不符合"*20100330*"这样规则的文件应该怎么删除?
  假设目录名为myTest且为当前目录的下一级目录,使用如下命令即可:
cd ./myTest && rm `ls | grep -v '20100330'` && cd ..  

  
进入myTest目录,删除文件后返回当前目录。
  

  
grep的-v参数表示反向选择。
  

  
一般使用rm删除文件的时候会有确认提示,如果不要确认,直接强制删除,可以使用rm的-f参数。
其他1条回答
  find ./ -type f \! -name "*20100330*" -exec rm -rf {} \;
如何反向选择文件并删除
  http://bbs.csdn.NET/topics/390077765
  案例:一个文件夹下我想删除 除了abc文件 之外的所有文件,命令怎么写(Linux下)
  find . -maxdepth 1 -type f -not -name 'abc' -exec rm '{}' ';'
  ls | grep -v abc | xargs -i rm -rf {}
  rm -f `ls | grep -v abc`
  如果文件很多的情况下,不要用这种方法……
  要用2楼的方法……
  mv abc /tmp
  rm *
  mv /tmp/abc .
反向显示文件
  使用ls命令仅仅显示当前目录不包括.的文件.
  ls加grep过滤的方式:ls -al | grep -v '\.'(ls --ignore=.* -al也可实现)。
  在打开extglob模式下(缺省是打开的),ls也可以实现,而且更加灵活.
  shopt -u extglob #关闭
  shopt -s extglob #打开
  ls -al !(*.*)
  ls -al -d !(*.*)
  本文出自http://blog.csdn.net/taiyang1987912/article/details/41488395



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-556963-1-1.html 上篇帖子: Shell文本处理三剑客(二) 下篇帖子: linux的shell特性三兼杂记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表