【发布时间】:2014-02-19 12:49:10
【问题描述】:
我有一些进程正在生成每日报告的目录。
看起来像:
[root@test raportdaily]$ ls -l
razem 538332
-rwxrwxr--+ 1 raport raport 541526 02-17 06:06 REPORT-SYSTEM_2014-02-17_060623.csv
-rwxrwxr--+ 1 raport raport 542718 02-18 06:22 REPORT-SYSTEM_2014-02-18_062229.csv
-rwxrwxr--+ 1 raport raport 542886 02-19 06:28 REPORT-SYSTEM_2014-02-19_062826.csv
我无法处理的是文件名的最后 6 位数字格式为 HourMinuteSecond 并且每天都不同。
我想创建一个shell script,它可以加载这个文件(我需要知道名称)并将其更改为character set。
如果我知道这个文件的确切名称,我可以直接访问它:
#!/bin/sh
iconv -c --from=utf8 --to=utf8 /home/raport/REPORT-SYSTEM_2014-02-19_062826.csv
如何使用如下所示的正则表达式:
REPORT-SYSTEM_2014-02-19_.*.csv
为了在iconv函数中使用这个regex的匹配?
【问题讨论】:
-
在 shell reg-exp 中,句点 ('.') 表示句点,而不是语言 reg-exp 中的“任何字符”。你可以只做
REPORT-SYSTEM_2014-02-19_*.csv或者如果你真的确定最后有 6 个数字,?char 是 shell reg-exp for 1 char,所以REPORT-SYSTEM_2014-02-19_??????.csv。祝你好运。