免费注册 查看新帖 |

Chinaunix

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

[文本处理] 批量修改日志文件名 [复制链接]

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-05 13:52 |只看该作者 |倒序浏览


要把connect.log.2014-02-14  变成connect.log.2014-02-15.。connect.log.2014-02-15 变成connect.log.2014-02-16 等等
connect.log.2014-03-01变成 connect.log.2014-03-02等等
依次内推 需注意2月28是月末 别弄成2月29了

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2014-03-05 13:58 |只看该作者
那你自己有没有试过呢?

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
3 [报告]
发表于 2014-03-05 16:15 |只看该作者
本帖最后由 yestreenstars 于 2014-03-05 16:16 编辑

try:
  1. mkdir tmp
  2. for file in `ls connect.log.*`;do mv $file "tmp/${file%.*}."`date +%F -d "${file##*.}+1days"`;done
  3. mv tmp/* .
  4. rmdir tmp
复制代码

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
4 [报告]
发表于 2014-03-05 17:55 |只看该作者
谢谢星辰,可以实现
但是其中的变量不是很明白
${file%.*}
以及${file##*.}

论坛徽章:
0
5 [报告]
发表于 2014-03-05 23:04 |只看该作者
回复 3# yestreenstars


    同问

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2014-03-05 23:38 |只看该作者
@kakaliu@hhdzhu

e.g.
  1. $ file='connect.log.2014-2-28'
  2. $ echo ${file%.*}
  3. connect.log
  4. $ echo ${file##*.}
  5. 2014-2-28
复制代码
一个百分号或者井号表示懒惰匹配,两个表示贪婪匹配。
井号是从前往后匹配,百分号是从后往前匹配,并移除匹配到的内容。

man bash
       ${parameter#word}
       ${parameter##word}
              Remove matching prefix pattern.  The word is expanded to produce a pattern just as  in  pathname  expansion.   If  the  pattern
              matches  the  beginning of the value of parameter, then the result of the expansion is the expanded value of parameter with the
              shortest matching pattern (the ``#'' case) or the longest matching pattern (the ``##'' case) deleted.  If parameter is @ or  *,
              the  pattern  removal  operation  is applied to each positional parameter in turn, and the expansion is the resultant list.  If
              parameter is an array variable subscripted with @ or *, the pattern removal operation is applied to each member of the array in
              turn, and the expansion is the resultant list.

       ${parameter%word}
       ${parameter%%word}
              Remove  matching  suffix  pattern.   The  word  is expanded to produce a pattern just as in pathname expansion.  If the pattern
              matches a trailing portion of the expanded value of parameter, then the result of  the  expansion  is  the  expanded  value  of
              parameter  with  the  shortest matching pattern (the ``%'' case) or the longest matching pattern (the ``%%'' case) deleted.  If
              parameter is @ or *, the pattern removal operation is applied to each positional parameter in turn, and the  expansion  is  the
              resultant  list.   If  parameter is an array variable subscripted with @ or *, the pattern removal operation is applied to each
              member of the array in turn, and the expansion is the resultant list.

论坛徽章:
0
7 [报告]
发表于 2014-03-06 09:03 |只看该作者
回复 6# yestreenstars


    谢谢,怪不得搜正则表达式符号搜不到这些!

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
8 [报告]
发表于 2014-03-06 09:21 |只看该作者
yestreenstars 发表于 2014-03-05 23:38
@kakaliu@hhdzhu

e.g.一个百分号或者井号表示懒惰匹配,两个表示贪婪匹配。


明白了 非常感谢!

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
9 [报告]
发表于 2014-03-06 12:24 |只看该作者
@kakaliu
@hhdzhu
打开ABS,看看第120页。

Advanced Bash-Scripting Guide 3.9.1 中文版.pdf
http://bbs.chinaunix.net/thread-1610033-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP