2012-11-09 29 views

回答

2

如果你的文件,其中帶前導零的名字命名,它會更容易,即

cat [0-9].csv [0-9][0-9].csv .... > new.csv 

但它不是很難獲得真正的數字順序,給出

ls -1 
1 
10 
11 
12 
13 
2 
20 
21 
3 
7 
8 
9 

(兩個樣品中請注意,該選項以Ls是一個數,(1),而不是字母L(升))

AND

ls -1 [0-9]* | sort -n 
1 
2 
3 
7 
8 
9 
10 
11 
12 
13 
20 
21 

THEN

cat $(ls -1 *.csv | sort -n ) > new.csv 

假設你的所有CSV文件編號。

如果您有超過1000個文件,shell中的文件arg處理可能會崩潰,並且您應該發佈一個新問題以正確使用xargs。

要查看發生了什麼添加殼調試/跟蹤使用

set -vx # to turn on 
set +vx # to turn it off 

。 IHD。

IHTH。

+0

的ls -l * .CSV |排序-n似乎是失靈:ls -l命令* .CSV |排序-n -rw-R- -r-- 1 root root 110427099 Sep 4 20:37 94.csv -rw-r - r-- 1 root root 110439250 Sep 4 20:15 93.csv -rw-r - r-- 1 root root 111962812 Sep 4 19:53 92.csv -rw-r- -r-- 1 root root 114716696 Sep 4 14:35 65.csv -rw-r - r-- 1 root root 115487626 Sep 4 08:05 35.csv -rw-r - r-- 1 root root 115777573 Sep 3 20:25 1.csv – user121196

+0

請注意,這是-1(一),而不是-l(字母L)。祝你好運。 – shellter

0

帶內嵌參數的一個內襯(您應該用最大文件號替換N)。腳本將跳過unexisted文件,因此,如果您按順序錯過幾個文件你不會得到錯誤:)

for i in `seq 0 N`; do test -f $i.csv && cat $i.csv; done >> result.csv 

或腳本使用參數

#!/bin/bash 

for i in `seq 0 $1` 
do 
    if [ -f "$i.csv" ] 
    then 
     cat $i.csv >> $2 
    fi 
done 

用法:./script.sh MAX_CSV_ID RESULT_FILE

例子:./script.sh 89周new.csv