免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: html
打印 上一主题 下一主题

find命令怪问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-02-16 11:22 |只看该作者
shell确定是bash

测试
[root@localhost ~]#shell
bash: shell: command not find

[root@localhost ~]# vi /usr/bin/dof.sh
[root@localhost ~]# cat /usr/bin/dof.sh
/usr/bin/find /backupdb/ecard -name '*.dmp' -atime +20 -exec /bin/rm -rf {} \;

执行
[root@localhost ~]#dof.sh
find: missing argument to 'exec'

不过现在问题解决了。办法是,重新写一个新的脚本,内容是一样的。
[root@localhost ~]# vi /usr/bin/findf.sh
[root@localhost ~]# cat /usr/bin/findf.sh
/usr/bin/find /backupdb/ecard -name '*.dmp' -atime +20 -exec /bin/rm -rf {} \;

执行,ok,没有再报错。
虽然很晕,但是只能认为,原脚本文件中有看不到的东西再做怪。
只能怪自己没有肉眼看见鬼的本事

论坛徽章:
0
22 [报告]
发表于 2008-02-16 12:49 |只看该作者
不过现在问题解决了。办法是,重新写一个新的脚本,内容是一样的。


晕,这个应该是一开始就尝试的!

论坛徽章:
0
23 [报告]
发表于 2008-02-17 11:12 |只看该作者
原脚本中没有“看不见的东西”……linux是科学不是玄学……

你这样写不对,花括号也要加单引号的,下面的三种语句都可以解决你的问题:

方法1:
find /backupdb/ecard -name '*.dmp' -atime +20 -exec rm -f  '{}'  ';'
——你忘记你得到的输出了吗?“missing arguments”这里所说的arguments是那对花括号,它还没有被find程序识别成“查找得到的结果”,就被shell解释了。

方法2:
find /backupdb/ecard -name '*.dmp' -atime +20 | xargs rm -f

方法3:
rm -f `find /backupdb/ecard -name '*.dmp' -atime +20`
(注意这里是反引号不是单引号)

论坛徽章:
0
24 [报告]
发表于 2008-02-17 19:07 |只看该作者
find /backupdb/ecard -name '*.dmp' -atime +20 -exec rm -f  '{}'  ';'
——你忘记你得到的输出了吗?“missing arguments”这里所说的arguments是那对花括号,它还没有被find程序识别成“查找得到的结果”,就被shell解释了。


你是怎么得出这个结论的?你在哪个manual上看到 {} 和 ; 要用单引号?

论坛徽章:
0
25 [报告]
发表于 2008-02-18 10:52 |只看该作者
不是文本里有什么看不见的东西; 怀疑你有两个dof.sh;
运行脚本要养成习惯带上路径(相对或者绝对路径都可以)
应该这样运行:#/usr/bin/dof.sh
1.检查一下当前用户的PATH变量
2.搜索一下是否有多个dof.sh脚本

论坛徽章:
0
26 [报告]
发表于 2008-02-20 15:23 |只看该作者
谢谢楼上诸位,
{和;还要加引号,还是第一次听说,
zarok的脚本会去尝试,
多个dof.sh是不会有的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP