कई के लिए ट्री कमांड में शामिल और शामिल नहीं है


33

क्या आप कृपया मुझे परिणाम के रूप में परिणाम को फ़िल्टर करने के लिए ट्री कमांड का उपयोग करने का एक उदाहरण दे सकते हैं:

  • निर्देशिकाओं को अनदेखा करना (कहना bin, unitTest)
  • केवल एक्सटेंशन होने कुछ फ़ाइलों लिस्टिंग (मान लें .cpp, .c, .hpp, .h)
  • मापदंड से मेल खाते हुए केवल परिणामी फ़ाइलों का पूर्ण पथ-नाम प्रदान करना।

जवाबों:


54

एक तरीका है स्विच -Iऔर -Pस्विच के साथ पैटर्न का उपयोग करना :

tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/

-fप्रत्येक फ़ाइल के लिए पूर्ण पथ प्रिंट, और -Iपैटर्न में शामिल नहीं फ़ाइलें यहाँ एक लंबवत बार से अलग कर दिया। -Pस्विच inlcudes केवल फ़ाइलें एक निश्चित विस्तार मिलान पैटर्न में सूचीबद्ध।


6
नोट: अपने -I ध्वज में अनुगामी स्लैश शामिल न करें, जैसे -I bin, नहीं -I bin/
थोरसुमोनर

यह एक त्रुटि बनाता हैsed: illegal option -- I
फ्रांस्वा रोमेन

4

उपयोग findऔर treeकमांड जो pruneखोज के निर्देशिका को बाहर करने के लिए है और tree -Pपैटर्न को खोजने के लिए उपयोग के लिए है।

उदाहरण के लिए, यदि आप miscनिर्देशिका को बाहर करना चाहते हैं, तो -path ./misc -prune -oअपने खोज कमांड में जोड़ें ।

उदाहरण के लिए। find . -path ./misc -prune -o -exec tree -P <pattern> {} \;या आप उपयोग कर सकते हैं-name "*.cpp" in find

कई निर्देशिकाओं को छोड़कर उपयोग के लिए

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o


मेरे लिए, उदाहरण के साथ, त्रुटि का पता चलता है "ढूंढें: '-o' के बाद एक अभिव्यक्ति की उम्मीद है"
वेबकॉमर

क्या आपने find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -ofind . -path ./misc -prune -o -exec tree -P *.cpp {} \;
बजे

2

सच्चा समाधान पूर्ण पथों का उत्पादन करना है, अवांछित रास्तों को फ़िल्टर करना है, और अंत में आउटपुट को ठीक करना है।

tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'

यदि आउटपुट में सभी फाइलें आवश्यक हैं, तो "डी" पैरामीटर को हटा दें।

यदि आप जापानी समझ सकते हैं, तो विस्तृत विवरण यहां पाया जा सकता है: http://qaon.net/press/archives/572


-अगर झंडा सुपर उपयोगी!
माइकल डिमिट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.