2014-02-19 3 views
0

У меня есть каталог, в котором какой-то процесс генерирует ежедневные отчеты.SH скрипт, получающий файл с выражением regula

Который выглядит следующим образом:

[[email protected] 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 

Для того, чтобы использовать матч это regex в iconv функция?

+0

В командной строке reg-exp период ('.') Означает период, а не «любой символ», как в языке reg-exp. Вы можете просто сделать 'REPORT-SYSTEM_2014-02-19 _ *. Csv' ИЛИ если вы действительно уверены в 6 номерах в конце,'? 'Char - это shell reg-exp для 1 char, поэтому' REPORT-SYSTEM_2014-02- 19 _ ??????. Csv'. Удачи. – shellter

ответ

1

Вы можете сделать это легко с Grep:

FILE=`ls /home/raport/ | grep "REPORT-SYSTEM_2014-02-19_.*.csv"` 
iconv -c --from=utf8 --to=utf8 $FILE 

Обратите внимание на обратные кавычки, используемые в первой строке.

+0

С уважением, я просто немой ... Как использовать результат grep как переменной в 'sh'?:/ – Mithrand1r

+0

Я отредактировал свой вопрос, чтобы включить создание переменной –

+0

У меня есть чему поучиться ... Это выглядит так легко. Спасибо, Василий Сиракис! – Mithrand1r

Смежные вопросы