例子1

查看当前文件夹下有哪些文件和子文件夹
我们看到俩个文件夹 和多个文件,我现在的需求是 只保留 public 这个文件夹 其他的文件夹和文件 统统都删除,怎么办呢?
只要一个命令

ls | grep -v  public | awk  '{system("rm -rf "$1)}'

如果只保留common 这个文件夹 需要命令 改为

ls | grep -v  common  | awk  '{system("rm -rf "$1)}'

例子2:

linux删除目录下所有文件,但是保留文件夹

删除目录和子目录下所有pcm文件,但是保留文件夹,命令如下

find ./ -name "*.pcm" | xargs rm

其它方法参考:

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 !(*.*)

https://blog.csdn.net/taiyang1987912/article/details/41488395?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

Linux之不删除指定文件夹,其他都删(文件和文件夹)相关推荐

  1. linux下批量删除指定后缀的文件

    g: find -name "*.frag" -exec dos2unix {} \; find -name "*.s" -exec rm -f {} \; f ...

  2. C# 删除指定目录下具有某后缀的全部文件

    void DelectLog(string srcPath){try{DirectoryInfo dir = new DirectoryInfo(srcPath);FileSystemInfo[] f ...

  3. 手机里tencent文件夹能删吗_【我要删除tencent文件夹】手机删了tencent文件夹_tencent什么文件夹...

    2018-08-18 09:31:39 WinXP系统经常对磁盘进行碎片整理.垃圾清理,清理时候发现有一个Tencent文件夹.Tencent是什么文件夹?可以删除吗?带着此疑问,接下去教程为大家详细 ...

  4. linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...

  5. linux shell脚本 删除指定目录下文件夹(可指定文件夹名、时间)

    情景:需要删除以201812开头的.6天前修改的文件夹(文件夹里包含文件).鼓捣了好一会,开始用find /home/users/niu/test/log/ -name '201812*' -type ...

  6. Linux下定时删除指定目下n天前的文件

    * 6 * * * find /root/home/zhang/* ctime 1-exec rm -rf {} \; 表示每天早上六点删除/root/home/zhang目录下一天前创建的所有文件, ...

  7. 【转】Linux下定时删除指定目下n天前的文件

    * 6 * * * find /root/home/zhang/* ctime 1 -exec rm -rf {} \; 表示每天早上六点删除/root/home/zhang目录下一天前创建的所有文件 ...

  8. linux sed命令 删除指定行

    sed命令常用到的两个选项: -i : 直接在文件上编辑 (edit files in place) -e[默认选项]:只在命令行输出,而文件不改变 (add the script to the co ...

  9. java删除指定的文件夹_java脚本删除指定目录下的所有指定名称的文件夹

    前阵子出差,经常拷贝项目源码,源码里面总是包括.svn文件夹,使得拷贝起来很麻烦,而且文件大了很多,所以自己编写小程序删除,基于同事也经常让我传这段代码,干脆制作成可执行文件.并且是通用的删除小程序. ...

最新文章

  1. oracle怎么adi导入,Web adi 导入笔记 详细图解
  2. C++类与new和delete操作符
  3. shell如果文件夹不存在则创建
  4. 新建VHDL的Vivado工程
  5. 如何编写用户操作手册
  6. sql点滴41—MyISAM 和 InnoDB 讲解
  7. 微软首款 Office 应用程序登陆 Linux
  8. StackRec: 通过迭代堆叠实现推荐系统的高效训练
  9. 读jQuery源码 jQuery.data
  10. mysql数据库的字符集设置
  11. 分期手续费率转换成年利率
  12. python入门ppt_Python入门基础ppt课件.ppt
  13. 清华等7校联考时间确定 北大联盟增至13所
  14. CentOS 7上搭建安全、容灾、高可用的etcd集群
  15. Linux虚拟机克隆后网络冲突解决办法
  16. 企业实战之部署Solarwinds Network八部众
  17. 服务器减少一半,TDengine在华自科技的落地实践
  18. Keyboard Demo
  19. 生命周期组件框架:带有多状态机的单实现类
  20. C语言上机错误,C语言上机常见错误和程序调试

热门文章

  1. 刚刚,官宣100000个炫酷微信红包封面,速度撸!
  2. Spring Boot发布2.6.2、2.5.8:升级log4j2到2.17.0
  3. 腾讯、阿里到底有多缺这类程序员?
  4. OpenAPI 规范 3.1.0 发布,赶紧来尝尝鲜!
  5. 精美图文讲解Java AQS 共享式获取同步状态以及Semaphore的应用
  6. Zuul:构建高可用网关之多维度限流
  7. html滚动条样式自定义,CSS3自定义滚动条样式
  8. arcface mxnet转onnx
  9. unable to execute clang-tidy
  10. cannot import name ‘izip‘ from ‘itertools‘