2014-02-25 17 views
0

我有幾百個文件屬於大約20組名單:Linux:如何根據文件名連接幾個文件列表?

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

文件的各組(最後一位數字)的數量是靈活的。在連接之前,文件按照第一個數字排序也很重要。謝謝你的幫助!

+0

目前還不清楚你在問什麼 - 將所有名爲file_x_1的文件連接在一起,然後是所有名爲file_x_2等的文件,以便輸出約20個文件? –

回答

0

使用循環連接具有相同後綴的文件轉換成一個組合文件:

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

根據區域設置的不同,這可能無法在'file_'後面的第一個數字上正確排序。 – chepner

+0

這就是我最擔心的事情。我會稍後再嘗試。任何提示以確保分類正確? – aciM

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) 

我希望不是正確瞭解您的需求...