免费注册 查看新帖 |

Chinaunix

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

【求助】怎样让rm在删除某一类文件时提示确认? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-15 16:48 |只看该作者 |倒序浏览
10可用积分
如题,比如让删除所有*.cpp时让我确认一下,但删除别的文件时不需要确认?
之所以有这个要求,是因为我觉得如果用alias rm=rm -i 的话,提示太多可能就麻木了,习惯性的敲y

希望能做到这样:

1.如果输入 rm a.cpp,这时希望确认一下y/n

2.如果输入 rm a.o, 希望直接删除

3.如果输入 rm *,这时如果将要被删除的文件中存在cpp文件,确认一下;否则直接删除。

望各位高手相助!

最佳答案

查看完整内容

把下列代码写入/usr/bin/myrm效率的影响不大,尤其是有交互的时候。

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
2 [报告]
发表于 2009-01-15 16:48 |只看该作者
原帖由 flyiop 于 2009-1-16 08:29 发表
这个,不会写啊……而且效率也是问题。

把下列代码写入/usr/bin/myrm

  1. #!/bin/sh

  2. #rm=$(whereis rm | awk '{print $2;exit}');
  3. rm=/bin/rm

  4. for file in "$@"; do
  5.     if [[ "$file" == *.cpp ]]; then
  6.         ${rm} -i "$file"
  7.     elif [[ "$file" == *.o ]]; then
  8.         ${rm} -rf "$file"
  9.     else
  10.         ${rm} -rf "$file"
  11.     fi
  12. done
复制代码
# chmod +x /usr/bin/myrm
# whereis myrm
myrm: /usr/bin/myrm
# myrm a.cpp b.cpp
/bin/rm: remove regular empty file `a.cpp'? y
/bin/rm: remove regular empty file `b.cpp'? y
# myrm a.o
# myrm abc

效率的影响不大,尤其是有交互的时候。

论坛徽章:
0
3 [报告]
发表于 2009-01-15 17:14 |只看该作者
你这个问题好复杂啊,你可以自己写个shell脚本,也许可行

论坛徽章:
0
4 [报告]
发表于 2009-01-15 17:24 |只看该作者
然后把脚本放到/usr/local/bin/下

论坛徽章:
0
5 [报告]
发表于 2009-01-15 23:07 |只看该作者

回复 #1 flyiop 的帖子

rm -rf a.cpp

论坛徽章:
0
6 [报告]
发表于 2009-01-16 08:29 |只看该作者
原帖由 buaachenhao 于 2009-1-15 17:14 发表
你这个问题好复杂啊,你可以自己写个shell脚本,也许可行


这个,不会写啊……而且效率也是问题。

论坛徽章:
0
7 [报告]
发表于 2009-01-16 08:30 |只看该作者
原帖由 kns1024wh 于 2009-1-15 23:07 发表
rm -rf a.cpp


这个貌似是幽默吧?

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
8 [报告]
发表于 2009-01-16 11:07 |只看该作者
如果想通过输入rm使用此功能,可以修改alias rm=myrm, 或者通过别的方式。

论坛徽章:
0
9 [报告]
发表于 2009-01-16 17:05 |只看该作者
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
dir = raw_input('输入要删除文件的所在目录:')

os.chdir(dir)
for f in os.listdir(dir):
    if os.path.isfile(f):
        sEx = os.path.splitext(f)[1][1:]
        if str(sEx) == 'cpp':
            os.system('rm -i %s' % f)
            
        else:
            os.system('rm -rf %s' % f)

[ 本帖最后由 izzy_sec 于 2009-1-16 17:53 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-01-16 17:09 |只看该作者
我乱改了个东西
cd /bin
mv rm rm.old

vi rm
+/bin/bash
+/bin/rm.old -i $1

这样的方法,只能对rm  filename -rf的方式提供是否确认删除,不能对 rm -rf filename提示
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP