2013-07-18 20 views
1

我正在收集一些類似/ tmp/data/$ yearmonth/$ day/$ hour的目錄結構中的tsv文件。因此,有/ TMP /數據/ $ yearmonth/$日從一系列文件中讀取的貓

內24個目錄我有shell腳本是這樣的:

yearmonth=`date -d "-2 days" +%Y%m` 
day=`date -d "-2 days" +%d` 

files=() 
cd /tmp/data/$yearmonth/$day 
for i in `ls -a */*.tsv` 
do 
    files+=($i) 
done 

陣列的文件已經全部存儲在其中的TSV文件。我想將所有這些tsvfiles「cat」到單個tsvfiles,並且想對它執行排序| uniq -c。 我該怎麼做? 隨着tsv文件成爲巨大的貓可以變得非常緩慢。什麼可能是另一種選擇。 感謝

+0

有什麼關於'cat'慢? –

+0

tsv文件真的很大,貓操作很慢 – user1189851

+2

你能顯示所有的代碼嗎? –

回答

1

與正在顯示的代碼的一些問題:

  1. 如果你有足夠的文件或名稱足夠長在你的子目錄ls -a是要失敗的,在參數列表中的文件太多。標準的補救方法是使用find

    發現的/ tmp /數據/年/月/日型的F -iname「* .tsv格式」 -print0

  2. 一旦你發現你可以管的文件列表它產生直接進樣

    | xargs的-0排序--unique

沒有cat參與,但當然,這些文件仍然需要發現和讀取。