免费注册 查看新帖 |

Chinaunix

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

[文件目录] 如何做这样的一个查找和删除操作 [复制链接]

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
21 [报告]
发表于 2013-01-22 11:26 |只看该作者
@weichanghe2000
@代号:军刀

感谢weichanghe2000指出错误,感谢军刀的分享。
这个问题还真没仔细研究过。如果说 -o 会因为第一个执行而导致第二个不执行的话,那我觉得就得不带 -o 的多个 find 来分步处理了。17 楼 blackold 的方法也有 -o 不知道是不是正确的,不过我觉得可以借鉴的地方是不用 -o,把所有条件都用 regexp 来表达,从而避免使用 -o 了。

我再找找看有没有更详细的说明,虽然“expr2 is not evaluated if expr1 is true。”,但后面有用到 {} 来表示搜索结果,那么这个 {} 是怎样得来的呢,找找资料。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
22 [报告]
发表于 2013-01-22 11:27 |只看该作者
回复 20# dn833


    这应该是谨慎正确的做法吧。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
23 [报告]
发表于 2013-01-22 11:28 |只看该作者
seesea2517 发表于 2013-01-22 11:26
@weichanghe2000
@代号:军刀

@weichanghe2000
@代号:军刀

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
24 [报告]
发表于 2013-01-22 11:30 |只看该作者
回复 22# blackold


    是的黑板,小心行得万年船。。。。。。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
25 [报告]
发表于 2013-01-22 11:31 |只看该作者
回复 21# seesea2517


    {} 就是符合条件的文件啊。

   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
26 [报告]
发表于 2013-01-22 11:36 |只看该作者
回复 14# weichanghe2000


    当 expr1 为 false 时,轮到 expr2 了。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
27 [报告]
发表于 2013-01-22 11:37 |只看该作者
回复 24# dn833


    肯定啊。

    还没搞清楚目标就开炮,后果比较严重吧。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
28 [报告]
发表于 2013-01-22 11:37 |只看该作者
回复 25# blackold


    嗯,我是顺着上面的问题想这样的一个问题,expr1 -o expr2,expr1 找到一些满足条件的文件集 R1;同时,expr2 原则上可以找到 R2 这个文件集合,但 expr2 因为 expr1 为真所以不执行了,那么最后 {} 是 R1 还是 R1+R2 呢?

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
29 [报告]
发表于 2013-01-22 11:40 |只看该作者
回复 28# seesea2517

实际测试是 R1+R2,如果是这样的话就没有上面的担心了:
  1. [seesea@UC ~]$ tree user
  2. user
  3. |-- a
  4. |   |-- 1.dat
  5. |   |-- a
  6. |   |-- a.log
  7. |   `-- bin
  8. |-- b
  9. |   |-- 1.dat
  10. |   |-- a
  11. |   |-- a.log
  12. |   `-- bin
  13. `-- c
  14.     |-- 1.dat
  15.     |-- a
  16.     |-- a.log
  17.     `-- bin

  18. 6 directories, 9 files
  19. [seesea@UC ~]$ find user -type f -name a.log
  20. user/c/a.log
  21. user/b/a.log
  22. user/a/a.log
  23. [seesea@UC ~]$ find user -type f -name a.log -o -type f -name 1.dat
  24. user/c/1.dat
  25. user/c/a.log
  26. user/b/1.dat
  27. user/b/a.log
  28. user/a/1.dat
  29. user/a/a.log
复制代码

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
30 [报告]
发表于 2013-01-22 11:40 |只看该作者
本帖最后由 blackold 于 2013-01-22 11:43 编辑

回复 28# seesea2517


    写表达式的写法有关。

如果整个表达式是 \( expr1 -o expr2 \) -exec {} ... \; 的话,{} 应该是 R1 + ( R2 - R1) 这个集合的元素。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP