首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除文件夹中除少数文件夹以外的所有文件/文件夹?

如何删除文件夹中除少数文件夹以外的所有文件/文件夹?
EN

Stack Overflow用户
提问于 2014-08-08 15:10:09
回答 6查看 505关注 0票数 6

我正在尝试为debian包编写维护脚本。假设我有一个如下的目录结构:

代码语言:javascript
运行
复制
application/
----application/file1.txt
----application/file2.txt
----application/config
--------application/config/c1.conf
--------application/config/c2.conf
----application/logs
--------application/logs/l1.txt
--------application/logs/l2.txt
----application/src
--------application/src/static/
------------application/src/static/js
------------application/src/static/css
--------application/src/s1.py
--------application/src/s2.py
----application/lib
--------application/src/js/
--------application/src/css/

现在,我想删除除configlogs之外的所有文件/文件夹(在本例中为srclib文件夹,以及file1.txtfile2.txt文件)。我的PWD当前是appliaction/目录的父目录(即,我可以在我的PWD中看到application )。

我应该使用什么命令(一个小的bash script会更好)?(我用一些选项尝试了rm -rf,但错误地删除了其他文件,所以在尝试任何其他文件之前,我想知道正确的答案!)

EN

Stack Overflow用户

发布于 2014-08-08 16:17:57

代码语言:javascript
运行
复制
cd application
find . -type d | egrep -v '(^\./$|^\./log|^\./config)' | while read DIR
do
   echo rm -rf $DIR
done

这使用find列出所有目录,通过grep管道排除我们想要保留的目录(也排除"./“,这将是PWD),并将过滤后的列表管道到执行删除的while循环。我把"echo“放在里面,这样你就可以测试它是否能达到你真正想要的效果。如果你很高兴,那就去掉回声。如果返回的列表(DIR)按树顺序排列,例如d1、d1/d1a、d1/d1b,并且rm -rf d1会删除较低的文件夹,则您可能希望在rm -rf周围添加"if -d $DIR“。

票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25197825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档