2009-10-31 17 views
11

मैं निर्देशिका में सभी फाइलों को बिल्ली बनाना चाहता हूं, लेकिन प्रत्येक के बीच कुछ स्पेसर शामिल करना चाहता हूं।मैं "बिल्ली" के साथ संगत फाइलों के बीच एक खाली रेखा कैसे शामिल करूं?

उत्तर

10

उपयोग awk

awk 'FNR==1{print ""}{print}' file* > out.txt 
+0

गंदा रिकर्सन। लेकिन यह काम करता है: अजीब 'एफएनआर == 1 {प्रिंट ""} {प्रिंट}' * .txt> /tmp/out.txt – Matt

+0

आपका मतलब बुरा रिकर्सन क्या है? – ghostdog74

+1

यदि मैं अकेले उस पंक्ति को चलाता हूं तो कमांड कभी नहीं निकलता है, और फ़ाइलों को out.txt में जोड़ता रहता है (जो फाइलों के उसी फ़ोल्डर में है जो मैं बिल्ली-आईएनजी कर रहा हूं। Out.txt बहुत बड़ा, बहुत तेज़ हो जाता है। (दोबारा, ओएसएक्स 10.5.8 वाईआरएमवी)। – Matt

-2

echo "" > blank.txt
cat f1.txt blank.txt f2.txt blank.txt f3.txt

एक निर्देशिका में फ़ाइलों के सभी संभाल करने के लिए (शैल की तरह मानते हुए ksh)

for file in * ; do
   cat $file >> result.txt
   echo "" >> result.txt
done

+0

कि निर्देशिका में सभी फ़ाइलों की देखभाल नहीं करता है जब तक आप स्वयं उन्हें पैरामीटर के रूप में सूचीबद्ध करते हैं। –

+0

सावधान रहें यदि आप उस तरह की बिल्ली को लूप के साथ सब कुछ विस्तारित करते हैं। $ फ़ाइल एक निर्देशिका हो सकती है और आप एक निर्देशिका को कैटिंग करेंगे। – ghostdog74

2

आप pr(1) को देखने के लिए चाहते हो सकता है, जो आप जो भी बॉक्स के बाहर करना चाहते हैं वह कर सकते हैं।

अपने खुद के रोल करने के लिए, इस POSIX खोल स्क्रिप्ट टुकड़ा का विस्तार:

ls -1 | while read f; do cat "$f"; echo This is a spacer line; done > /tmp/outputfile 

यह और अधिक readably रूप में लिखा जा सकता है:

ls -1 | while read f; do 
    cat "$f" 
    echo This is a spacer line 
done > /tmp/outputfile 

आप वास्तव में नहीं है ls के लिए -1 की जरूरत है।

+0

धन्यवाद! बस आउटपुट को दूसरी निर्देशिका में रीडायरेक्ट करना याद रखें (जैसे अजीब समाधान में)। – Matt

+0

रोजर, अद्यतन किया गया। – DigitalRoss

9

, 'स्पेसर' सरल यहां इस्तेमाल किया उदाहरण की तुलना में अधिक हो सकता है

find . -type f -exec cat {} \; -exec echo "-- spacer --" \; 

प्रयास करें जाहिर है।

+0

काम करता है, लेकिन मैं अपने स्पेसर के रूप में "\ n" का उपयोग नहीं कर सकता, यह सिर्फ एक शाब्दिक '\ n' का उपयोग करता है? – Matt

+0

रिक्त रेखा के लिए बस 'echo "" 'का उपयोग करें। मुझे कहना चाहिए था कि स्पेसर उदाहरण से अधिक * या कम * हो सकता है। – pavium

+0

'echo" "ओएस एक्स पर काम नहीं कर रहा है? – Matt

-1

मुझे लगता है कि सबसे आसान तरीका paste आदेश का उपयोग किया जाता है:

paste $(ls *) > file.out 
+0

उम, नहीं, यह सिर्फ काम नहीं करता है। पेस्ट कुछ समान करता है लेकिन सवाल पूछने के लिए अलग है। यह फाइलों को interlaces। – Caleb

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