जवाबों:
ls *.txt | xargs cat >> all.txt
थोड़ा बेहतर काम कर सकते हैं, क्योंकि यह प्रत्येक फ़ाइल के बाद फिर से बनाने के बजाय all.txt के लिए संलग्न होगा।
वैसे, cat *.txt >all.txtकाम भी करेगा। :-)
यदि आपकी फ़ाइल के कुछ नाम में ',' या स्पेस विभाजक समस्या केxargs कारण विफल हो जाएगा
सामान्य तौर पर कभी भी xargsबिना -0 न चलाएं क्योंकि यह वापस आ जाएगा और किसी दिन आपको काटेगा।
इसके बजाय GNU समानांतर का उपयोग करने पर विचार करें:
ls *.txt | parallel cat > tmp/all.txt
या यदि आप पसंद करते हैं:
ls *.txt | parallel cat >> tmp/all.txt
जीएनयू समानांतर http://www.youtube.com/watch?v=OpaiGYxkSuQ के बारे में अधिक जानें
all.txt एक ही डायरेक्टरी में एक फाइल है, इसलिए जब वह उसी फाइल से उसी फाइल में लिखना चाहता है तो बिल्ली भ्रमित हो जाती है।
दूसरी ओर:
ls *.txt | xargs cat > tmp/all.txt
यह आपके मौजूदा डायरेक्टरी में टेक्सटाइल्स से सबटैक्स में सबटैक्स में पढ़ा जाएगा (इसमें शामिल नहीं है *.txt)।
तुम भी एक कमांड लाइन लंबाई सीमा के पार आ सकते हैं। उपयोग करने का कारण xargsयह है कि यह इनपुट को सुरक्षित कमांड-लाइन-आकार के विखंडू में विभाजित करता है। तो, ऐसी स्थिति की कल्पना करें जिसमें आपके पास निर्देशिका में सैकड़ों हजारों .txt फाइलें हैं। ls *.txtअसफल हो जायेगी। आपको करने की आवश्यकता होगी
ls | grep .txt$ |xargs cat > /some/other/path/all.txt
.txt$इस मामले में एक रेगुलर एक्सप्रेशन है जो सबकुछ मेल करता है। यह (इसलिए यह बिल्कुल वैसा नहीं है *.txt, क्योंकि अगर आपके पास कोई फाइल है atxt, तो *.txtयह मेल नहीं खाएगा, लेकिन रेगुलर एक्सप्रेशन होगा।)
दूसरे पथ का उपयोग इसलिए है, क्योंकि अन्य उत्तरों ने बताया है, all.txt पैटर्न से मेल खाता है *.txtइसलिए इनपुट और आउटपुट के बीच एक संघर्ष होगा।
ध्यान दें कि यदि आपके पास 'उनके नाम (और यह unmatched single quoteत्रुटि का कारण हो सकता है ) के साथ कोई फ़ाइल है , तो आप करना चाहेंगे
ls | grep --null .txt$ | xargs -0 cat > /some/other/path/all.txt
--Null विकल्प grep को \0डिफ़ॉल्ट न्यूलाइन के बजाय (aka null) चरित्र द्वारा अलग किए गए आउटपुट का उपयोग करने के लिए कहता है , और -0`xargs का विकल्प इसे उसी प्रारूप में इसके इनपुट की अपेक्षा करता है। यह तब भी काम करेगा, जब आपके पास उन में नए नामों के साथ फ़ाइल नाम हों।
lsलिए उपयोग न करें । यदि आप वास्तव में उपयोग नहीं कर सकते हैंcat *.txt >all.txtतो कोशिश करेंprintf '%s\0' *.txt | xargs -r0 cat >allऔर फिरmv all all.txtफाइल को स्वयं संदर्भित करने से बचें।