根据文件内的模式匹配在文件中移动附件名称

时间:2014-08-14 18:15:01

标签: linux

要求:我有3个文本文件a,b和c,其中包含一些文本和csv附件的文件名。

每个文件都有我需要搜索的特定模式。如果匹配,请移动附件的文件以匹配该特定模式。

例如:

文件a有模式苹果是红色的,而Attachemnt文件名是 filename.csv

脚本应该寻找"苹果是红色的"如果找到模式,请将filename.csv移动到' apples is red.csv'

类似地,文件b具有模式芒果黄色和附属文件名 filename2.csv

脚本应该寻找"芒果是黄色的"如果找到模式,则将filename2.csv移动到'芒果是yellow.csv。

有什么想法吗?

我可以查看文件中的模式' a'但是如何从文件中提取filename.csv' a'移动它?

抱歉alcanzar ... a.txt中的数据看起来像这样

电子邮件报告:苹果是红色的

结果附加为CSV文件。

Content-Type:application / octet-stream;名称=" filename1.csv"

内容描述:filename1.csv

我的要求是在电子邮件报告后grep for string:
和内容描述中的filename1.csv然后重命名
filename1.csv to apples是red.csv或者更好的是apples_are_red.csv。 电子邮件报告后的字符串:不断更改每个文件。 因此.csv必须重命名为字符串之后的所有内容"电子邮件报告:"

1 个答案:

答案 0 :(得分:1)

根据您的更新要求,这应该接近:

#!/bin/bash

for i in *.txt
do
    PATTERN=`grep "Email Report" $i | cut -c 15-`
    ATTACHMENT=`grep "Content-type" $i | cut -d\" -f2`

    echo "Checking for pattern $PATTERN in $ATTACHMENT"
    if [ ! -z `grep -l "$PATTERN" "$ATTACHMENT"` ]
    then
      echo mv $ATTACHMENT $PATTERN.csv
    fi
done