使用rm *.sh
删除以.sh结尾的文件很容易理解。但我怎么删除当前目录下的所有文件不.jar
东西这样结束rm * -except *.jar
如何删除当前目录中与给定模式不匹配的某些文件?
2
A
回答
6
试试这个:
find . -mindepth 1 -maxdepth 1 ! -name '*.jar' | sort
如果你真的想删除其输出的所有文件,那么只要做
find . -mindepth 1 -maxdepth 1 ! -name '*.jar' -delete
你可以阅读find(1)手册页,以获得关于这个功能强大的工具的更多信息。
编辑:
由于-delete标志在GNU才发现找> 4.2.3(由SiegeX指出的),这里有几个选择,这也确保我们不试图删除目录:
find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -print0 | xargs -0 -r rm -f
的-r xargs的标志是GNU扩展,所以这是稍微更轻便(它的工作原理在* BSD),但不作为清洁:
find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -print0 | xargs -0 rm -f
作为最后的 - 但大部分港口能 - 度假村:
find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -exec rm '{}' ';'
这对每一个文件,这使得它显著慢单独调用RM的缺点。
1
1
您可以通过启用扩展水珠extglob
选项,然后把你的模式里面!()
像这样做:
shopt -s extglob;
rm !(*.jar)
注意extglob
还为您提供以下内容:
?()
- 匹配零或一个模式*()
- 匹配零个或多个模式@()
- 匹配模式的!()
的只有一个 - 匹配任何除了图案
相关问题
- 1. 删除与某些文件扩展名不匹配的目录中的文件
- 2. 如何删除PHP中某个目录中匹配模式的文件?
- 3. 目录中的匹配模式如何删除文件
- 4. 如何从给定匹配项中删除匹配模式
- 5. 如何删除当前文件中的某些目录在linux编程
- 6. 如何删除与phing中的模式匹配的文件夹
- 7. 如果某些标准匹配,从列表中删除当前项目
- 8. 删除与时间模式匹配的目录中的所有文件
- 9. 从当前目录中删除文件
- 10. 如何使用SVN删除所有匹配模式的目录?
- 11. 使用glob排除某些文件的负模式匹配
- 12. 如何在Perl中删除与特定模式匹配的行?
- 13. sed替换模式,除非它匹配某些特定模式
- 14. 查找与Linux中某个目录中的模式匹配的文件数
- 15. Jq:递归删除与给定模式匹配的所有键
- 16. 从查找中排除某些文件名模式和目录
- 17. 删除与iOS中的模式匹配的文件
- 18. 如何删除某个特定目录中的所有文件
- 19. 通过模式匹配删除文件
- 20. Python Fabric - 删除匹配目录中带有空格的模式的文件?
- 21. 如何删除子目录中的文件和文件夹,但跳过删除Ruby中的某些文件名?
- 22. 如何从当前目录及其子目录删除特定文件?
- 23. 如何删除名称中某个特定模式的文件?
- 24. 从M3U文件中删除多个不匹配模式的行
- 25. 删除与某些通配符匹配的MySQL数据库?
- 26. 当某些特定值与给定数组匹配时,从多维数组中删除密钥
- 27. 如何删除某个文件夹中与特定格式匹配的所有文件?
- 28. 如何轻松删除最近修改过的文件中与某些正则表达式匹配的行
- 29. Emacs:Directed当前目录下名称与正则表达式匹配的文件?
- 30. 我如何删除目录中的文件,排除[UninstallDelete]部分中该文件夹中的某些文件
标签与[击]这个问题=) – SiegeX 2010-11-24 01:27:43