我正在尝试为debian包编写维护脚本。假设我有一个如下的目录结构:
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/现在,我想删除除config和logs之外的所有文件/文件夹(在本例中为src和lib文件夹,以及file1.txt和file2.txt文件)。我的PWD当前是appliaction/目录的父目录(即,我可以在我的PWD中看到application )。
我应该使用什么命令(一个小的bash script会更好)?(我用一些选项尝试了rm -rf,但错误地删除了其他文件,所以在尝试任何其他文件之前,我想知道正确的答案!)
发布于 2014-08-08 16:17:57
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“。
https://stackoverflow.com/questions/25197825
复制相似问题