免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6623 | 回复: 11
打印 上一主题 下一主题

如何删除当前目录下除.cpp .c 以外的所有文件和文件夹? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-11 13:28 |只看该作者 |倒序浏览
小弟shell菜鸟,求高手不吝赐教

论坛徽章:
0
2 [报告]
发表于 2007-10-11 13:46 |只看该作者
rm -rf "$(ls | egrep -v '\.c$' | egrep -v '\.cpp$')"


嗯,这样是不行的。


这样应该是可以的

  1. for file in *; do  echo "$file" | egrep -q '\.c$|\.cpp$' &>/dev/null || rm -rf "$file"; done
复制代码

[ 本帖最后由 hohoxu_hao115 于 2007-10-11 14:56 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2007-10-11 13:50 |只看该作者
for file in *;do echo $file|awk '!/\.c$/&&!/\.cpp$/{print "rm -rf "$0}'|sh;done

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2007-10-11 14:18 |只看该作者
find ! \( -name "*.cpp" -o -name "*.c" \) -exec rm {} \; 2>/dev/null

论坛徽章:
0
5 [报告]
发表于 2007-10-11 14:51 |只看该作者


感谢大家,受教了!
for file in *;do echo $file|awk '!/\.c$/&&!/\.cpp$/{print "rm -rf "$0}'|sh;done
这个完全没问题 perfect!
find ! \( -name "*.cpp" -o -name "*.c" \) -exec rm {} \; 2>/dev/null
这个不能删除文件夹 其他都行
rm -rf "$(ls | egrep -v '\.c$' | egrep -v '\.cpp$')"
这个似乎有问题

论坛徽章:
0
6 [报告]
发表于 2007-10-11 14:59 |只看该作者
rm -rf "$(ls | egrep -v '\.c$' | egrep -v '\.cpp$')"
如果所有要删除的文件名没有空格,去掉那个多余的双引号就行了。
双引号在这里画蛇添足了。

论坛徽章:
0
7 [报告]
发表于 2007-10-11 15:06 |只看该作者


正解!~~

论坛徽章:
0
8 [报告]
发表于 2007-10-11 18:05 |只看该作者
find ! \( -name "*.cpp" -o -name "*.c" \) -exec rm {} \; 2>/dev/nulll
这个应该是最准确的,因为可能存在于下级目录里面
之所以不能删除目录,应该是因为目录列出来的顺序在目录里面的文件前面,没有用re-r的话,是不能删除目录的。

论坛徽章:
0
9 [报告]
发表于 2007-10-11 20:14 |只看该作者
again, 纯 shell 解法:
-(dearvoid@LinuxEden:Forum)-(~/tmp/foo)-
[$$=311 $?=0]
; ls -lF
total 0
-rw-r--r--   1 clark  clark   0 Oct 11 20:11 a.cpp
-rw-r--r--   1 clark  clark   0 Oct 11 20:11 b.c
drwxr-xr-x   2 clark  clark  68 Oct 11 20:11 bar/
-rw-r--r--   1 clark  clark   0 Oct 11 20:11 c.h
-rw-r--r--   1 clark  clark   0 Oct 11 20:11 d.txt
-(dearvoid@LinuxEden:Forum)-(~/tmp/foo)-
[$$=311 $?=0]
; rm -rf !(*.cpp|*.c)
-(dearvoid@LinuxEden:Forum)-(~/tmp/foo)-
[$$=311 $?=0]
; ls -lF
total 0
-rw-r--r--   1 clark  clark  0 Oct 11 20:11 a.cpp
-rw-r--r--   1 clark  clark  0 Oct 11 20:11 b.c
-(dearvoid@LinuxEden:Forum)-(~/tmp/foo)-
[$$=311 $?=0]
; shopt extglob
extglob            on
-(dearvoid@LinuxEden:Forum)-(~/tmp/foo)-
[$$=311 $?=0]
; bye

论坛徽章:
0
10 [报告]
发表于 2007-12-10 16:57 |只看该作者
谢谢了
so moving!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP