在Bash脚本中解析文件名

时间:2016-08-09 10:34:09

标签: linux bash shell

我的文件名格式如下:

 Master.csv-yyyy-mm-dd.txt
example:- Master.csv.2016-07-06.txt

我想要以下列格式的子串。

  YY-MM

请快速帮助我

3 个答案:

答案 0 :(得分:1)

date_temp=$(echo Master.csv.2016-07-06.txt | awk -F. '{print $3}')
date -d"$date_temp" +%y-%m
16-07

答案 1 :(得分:1)

试试这个;

 ls M*.txt | awk -F. '{print substr($3,3,5)}'

user@user:/tmp$ ls M*.txt
Master.csv.2016-07-05.txt  Master.csv.2016-07-06.txt

user@user:/tmp$ ls M*.txt | awk -F. '{print substr($3,3,5)}'
16-07
16-07

如果文件夹包含文件名为hello_2016-07-06.txt,则可以尝试此操作;

ls *.txt | grep -oP '[\d]+-[\d]+-[\d]+' | awk -F- '{print substr($1,3,2)"-"$2}'

答案 2 :(得分:0)

使用Python的一个班轮:

echo 'Master.csv.2016-07-06.txt' | xargs -I{} python -c "import re; print re.search('\d{2}\-\d{2}', '{}').group(0)"