2014-06-05 13 views
25

में मैं जैसेरिकर्सिव बिल्ली सभी एकल फाइल

data\A\A\A\json1.json 
data\A\A\A\json2.json 
data\A\A\B\json1.json 
... 
data\Z\Z\Z\json_x.json 

फ़ोल्डर में बैठे फ़ाइलों का समूह है फ़ाइलें मैं एक एकल फाइल में सभी jsons बिल्ली करना चाहते हैं?

+4

परिणाम मान्य JSON नहीं होगा, आप सुनिश्चित हैं कि आप ऐसा करना चाहते हैं कर सकते हैं - आप अपनी फ़ाइलों की एक सूची है तो क्या होगा? – Barmar

उत्तर

49
find data/ -name '*.json' -exec cat {} \; > uber.json 

एक संक्षिप्त विवरण:

find <where> \ 
    -name <file_name_pattern> \ 
    -exec <run_cmd_on_every_hit> {} \; \ 
    > <where_to_store> 
+1

ढूंढने के बिना: 'cat ./data/*/*/*/*.json>।/All.json' –

+0

या' shopt-globstar' के साथ 'bash' 4 में, 'cat ./data/**/*। json'। – chepner

+0

जब बिल्ली निर्देशिका को मुद्रित करने का प्रयास करती है तो आपको त्रुटियों से बचने के लिए "-type f" (केवल फ़ाइलें) भी जोड़नी चाहिए। –

9

उपयोग find सभी JSON फ़ाइलें प्राप्त करने और उन्हें श्रेणीबद्ध करने के लिए।

find data -name '*.json' -exec cat {} + > all.json 

ध्यान दें कि यह मान्य JSON नहीं होगा। यदि आप एक JSON फ़ाइल को एकाधिक ऑब्जेक्ट्स रखना चाहते हैं, तो उन्हें एक एरे या ऑब्जेक्ट में होना आवश्यक है, इसलिए आपको उनके आसपास [ ] जोड़ना होगा और प्रत्येक के बीच , डालना होगा।

+2

मैं 'find' कमांड में भी 'टाइप प्रकार' पैरामीटर जोड़ूंगा। – palacsint

+2

कड़ाई से सच है, लेकिन यह '.json' एक्सटेंशन वाले निर्देशिकाओं के लिए काफी विपरीत होगा। – Barmar

+0

आप प्रत्येक फ़ाइल के बीच उपरोक्त आदेश में ',' अक्षर कैसे जोड़ते हैं? –

8

वैकल्पिक रूप से - आप पाइप कि xargs को

<path to your files> | xargs cat > all.json 
+2

को हटाने के लिए फ़ाइल को संपादित करना होगा: \ pwd \ ' – Alan

संबंधित मुद्दे