दे घुमा के
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