我是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
答案 0 :(得分:1)
使用Bash variable substitutions。
脚本循环所有AAAL
起始文件,将其名称存储到变量$in
中,并使用变量替换来处理名称,直到只剩下第二部分和第三部分为止(例如{{1 }}-> AAAL_555A_ORANGE1_F190404.TXT
)。
有关分步示例,请参见脚本中的注释;有关替代说明,请参见链接的文档:
555A_ORANGE