Linux:如何根据文件名连接多个文件列表?

时间:2014-02-25 14:20:19

标签: linux shell concatenation

我有一个包含大约20个组的数百个文件的列表:

file_1_1
file_2_1
file_3_1
...
file_22_2
file_23_2
...
file_900_20
file_901_20
...

每组中的文件数(最后一个数字)是灵活的。在连接之前,文件按第一个数字排序也很重要。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

使用循环将具有相同后缀的文件连接到组合文件中:

for i in {1..20}
do
    cat file_*_$i > combined_$i
done

答案 1 :(得分:0)

这可以完成这项工作

dir="./manyfiles"
export LC_ALL=C
while read num group
do
    cat $dir/*_${num}_${group} >> combined_${group}
done < <(find $dir -maxdepth 1 -name \*_*_* -print | awk -F_ '{print $(NF-1)," ",$NF}' | sort -k2,2n -k1,1n)

我希望能够正确理解你的需求......