दे घुमा के
globstarशेल विकल्प का उपयोग करके , हम पुनरावर्ती ग्लोबिंग का उपयोग कर सकते हैं./**/*
bash-4.3$ shopt -s globstar
bash-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 python
import 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।
ls -R | grep .xml