2011-04-27 9 views
6

मैं कुछ सौ फ़ाइलों में से HTML को पट्टी करना चाहता हूं।बैश: find -exec और फ़ाइल नाम

यहाँ आदेश मैं के साथ शुरू किया गया है:

find -name *.html -exec w3m {} > w3m {}.html.out \; 

समस्या मैं में है कि यह एक बड़ी .htm.out फ़ाइल बनाई दौड़े हैं (नाम {} .html.out) - मैं चाहता हूं कि जिस फ़ाइल का मैं उपयोग कर रहा हूं उसे नामित किया जाए जो भी मूल है।

उदाहरण के लिए, मैं

2002/filename.html 

है मैं w3m के माध्यम से इसे चलाने के लिए चाहते हैं, और 2002/filename.html.out

कोई सुझाव मिल सकता है? मैं अन्य समाधानों के लिए खुला हूं जो बैश

का उपयोग नहीं करते हैं, मैं साइगविन का उपयोग कर रहा हूं।

उत्तर

11

पुनर्निर्देशन find के बाहर होता है। एक सबहेल आमंत्रित करें।

find -name *.html -exec bash -c 'w3m "$1" > w3m-"$1".html.out' w3mout {} \; 
+0

यह इस आदेश के साथ काम करने समझे: खोज -name * .html -exec बैश -c 'w3m "$ 1"> "$ 1" .html.out' w3mout {} \; – andyhky

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