बैश
का उपयोग करना globstar
शेल विकल्प, हम पुनरावर्ती ग्लोबिंग का उपयोग कर सकते हैं ./**/*
bash-4.3$ shopt -s globstarbash-4.3$ for i in ./**/*.xml; do printf "%s\n" "$i" ; done./adwaita-timed.xml./bin/hw5/stuff/book/chapter42servletexample/build/web/META-INF/context.xml./bin/hw5/stuff/book/chapter42servletexample/build/web/WEB-INF/beans.xml./bin/hw5/stuff/book/chapter42servletexample/build/web/WEB-INF/web.xml
पर्ल
पर्ल में एक मॉड्यूल है Find
, जो पुनरावर्ती निर्देशिका ट्री ट्रैवर्सल के लिए अनुमति देता है । विशेष के भीतर find()
फ़ंक्शन, हम एक वांछित सबरूटीन और उस निर्देशिका को परिभाषित कर सकते हैं जिसे हम पार करना चाहते हैं, इस उदाहरण में .
. ऐसे मामले में एक लाइनर होगा:
bash-4.3$ perl -le 'use File::Find; find(sub{-f && $_ =~ /.xml$/ && print $File::Find::name},".")' ./adwaita-timed.xml./CLEAR_DESKTOP/blahblah/hw5/stuff/book/jsf2demo/build/web/WEB-INF/beans.xml./CLEAR_DESKTOP/blahblah/hw5/stuff/book/jsf2demo/build/web/WEB-INF/web.xml./CLEAR_DESKTOP/blahblah/hw5/stuff/book/liangweb/build.xml
अजगर
जबकि पर्ल में पुनरावर्ती पेड़ ट्रैवर्सल को समर्पित एक संपूर्ण मॉड्यूल है, पायथन में एक साफ कार्य है walk()
कि का हिस्सा है os
मॉड्यूल, और बार-बार शीर्ष पथ के ट्यूपल, सभी उपनिर्देशिकाओं की सूची, और फ़ाइल नामों की सूची देता है । हम निम्नलिखित कर सकते हैं:
bash-4.3$ python -c 'import os,sys; [ sys.stdout.write(os.path.join(r,i)+"\n") for r,s,f in os.walk(".") for i in f if i.endswith(".xml") ]' ./adwaita-timed.xml./CLEAR_DESKTOP/blahblah/hw5/stuff/book/jsf2demo/build/web/WEB-INF/beans.xml./CLEAR_DESKTOP/blahblah/hw5/stuff/book/jsf2demo/build/web/WEB-INF/web.xml./CLEAR_DESKTOP/blahblah/hw5/stuff/book/liangweb/build.xml
यह एक स्क्रिप्ट के रूप में बहुत दूर हो सकता है:
#!/usr/bin/env pythonimport os,sys for r,s,f in os.walk("."): for i in f: if i.endswith(".xml") print(os.path.join(r,i))
खोजें
अन्य उत्तरों का उल्लेख किया है find
पुनरावर्ती ट्रैवर्सल के लिए, और यह नौकरी के लिए जाने-माने उपकरण है । क्या उल्लेख की जरूरत है तथ्य यह है कि find
कई कमांड लाइन स्विच हैं, जैसे -printf
वांछित प्रारूप में आउटपुट प्रिंट करने के लिए, -type f
केवल नियमित फ़ाइलें खोजने के लिए, -inum
इनोड नंबर द्वारा खोजने के लिए, -mtime
संशोधन तिथि द्वारा खोज करने के लिए, -exec <command> {} \;
फ़ाइल को तर्क के रूप में पास करने के साथ फ़ाइल को संसाधित करने के लिए एक विशेष कमांड निष्पादित करने के लिए (जहां {}
मानक है find
वर्तमान फ़ाइल के लिए प्लेसहोल्डर) , और कई अन्य इसलिए कृपया मैनपेज पढ़ें find
.