2017-02-13 35 views
0

我有以下結構:擊:查找和連接文件

 
/home/ 
├── DIR1/ 
│ └── file_ab.csv 
├── DIR2/ 
│ └── file_cd.csv 
└── DIR3/ 
    └── file3_ef.csv 

file_**.csv包含彩車行,不同的花車每個DIR。

我想抓取所有file_**.csv文件的內容並連接它們。

我發現這個答案here

find /home -type f -name '*.csv' -exec cat {} \; > pl_parameters 

但我會得到一個名爲 'pl_parameters' 的空文件。爲什麼文件是空的?我怎樣才能解決這個問題?

+0

爲什麼不只是使用'cat /home/*/file1.csv> pl_parameters' –

+0

我嘗試了一個修改版本的建議:'cat /home/*/*.csv> pl_parameters',但沒有運氣。 – StatsSorceress

回答

1
find /home/DIR* -name 'file*csv' |xargs cat > output.csv 

find /home/DIR* -name '*csv'爲您提供文件的絕對路徑。

xargs cat會遍歷文件和打印cat文件內容

+0

我可以用pwd代替'home'嗎? – StatsSorceress

+1

'find $(pwd)/ DIR * -name'* csv'' –

+0

由於每個目錄只有一個csv文件,最終的工作版本是: 'find $(pwd)/ RUN * -name'* csv'| xargs cat> pl_paras_means.csv' – StatsSorceress

0

使用bash 4.0+,你可以使用globstar和使用更簡單的命令:

shopt -s globstar 
cd /home 
cat **/*.csv > pl_parameters 

**/擴展到整個目錄樹在當前目錄下。


你的命令:

find /home -type f -name '*.csv' -exec cat {} \; > pl_parameters 

對我來說很好 - 不知道爲什麼你的輸出文件得到了一個零。