将多个文本文件追加到单个文件中的脚本

时间:2019-05-09 11:21:58

标签: linux shell unix

我是Unix的新手,我需要编写一个脚本。有人可以在目录中包含文件列表的情况下帮助我,如果字符串格式的文件名匹配,我想合并文件吗?

AAAL_555A_ORANGE1_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555A_ORANGE2_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555A_ORANGE3_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555A_ORANGE4_F190404_D190408.TXT.freshfruits_20190422-115617     
AAAL_555B_ORANGE5_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555B_Orange6_F190404_D190408.TXT.freshfruits_20180422-115617 

如果文件名的第二部分=“ 555A”,而第三部分由ORANGE组成,则所有Oranges / 555A内容文件将合并为一个文件名为AAL_555a_Orange_date +“%Y%m%d” .txt的文件。

如果文件名的第二部分=“ 555B”,而第三部分由ORANGE / 555B组成,则所有Oranges内容文件将合并为一个文件名,文件名为AAL_555b_Orange_date +“%Y%m%d” .txt。

如果文件名的第二部分=“ 555A”,而第三部分由MANGO组成,则所有Mango内容文件将合并为一个文件名为AAL_555a_Mango_date +“%Y%m%d” .txt的文件。

请帮助..

我知道以下命令将多个文件附加到一个文件中。但是在这里我想根据文件名中的模式来做。

cat File1 file2 file3 >> final.txt

类似这样的东西

for i in *.TXT; do    
   while field separator='_' read -r str1 num str2 ; do    
     if [ "$str1" = "RTG" ]; then    

     fi         
   done     
done  

1 个答案:

答案 0 :(得分:1)

使用Bash variable substitutions

脚本循环所有AAAL起始文件,将其名称存储到变量$in中,并使用变量替换来处理名称,直到只剩下第二部分和第三部分为止(例如{{1 }}-> AAAL_555A_ORANGE1_F190404.TXT)。

有关分步示例,请参见脚本中的注释;有关替代说明,请参见链接的文档:

555A_ORANGE