সজোরে আঘাত
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