যদিও find
কমান্ড সহজ উপায় যাও recursively ডিরেক্টরি ট্রি তর্ক হয়, সেখানে অন্যান্য উপায় আছে এবং বিশেষ করে দুই স্ক্রিপ্টিং ভাষা ডিফল্ট ভাবে উবুন্টু সঙ্গে আসা ইতিমধ্যে তা করার ক্ষমতা আছে।
সজোরে আঘাত
bash
খুব সুন্দর globstar
শেল অপশন রয়েছে যা ডিরেক্টরি গাছের পুনরাবৃত্তির জন্য অনুমতি দেয়। ./**/*
প্রসারণের আইটেমটি কোনও ফাইল এবং এটিতে কাঙ্ক্ষিত পাঠ্য রয়েছে কিনা তা পরীক্ষা করে দেখার দরকার আমাদের :
bash-4.3$ for f in ./**/* ;do [ -f "$f" ] && [[ "$f" =~ "postgis-2.0.0" ]] && echo "$f"; done
./testdir/texts/postgis-2.0.0
পার্ল
পার্লের মডিউল রয়েছে যা ডিরেক্টরি গাছের পুনরাবৃত্ত ট্র্যাভারসাল সম্পাদন করতে দেয় এবং সাব্রোটিনের মাধ্যমে সেগুলিতে নির্দিষ্ট ক্রিয়া সম্পাদন করতে পারে। একটি ছোট স্ক্রিপ্টের সাহায্যে আপনি ডিরেক্টরি ট্রিকে অতিক্রম করতে পারেন, পছন্দসই স্ট্রিং যুক্ত অ্যারেগুলিতে থাকা ফাইলগুলিকে ধাক্কা দিতে পারেন এবং তারপরে এটি প্রিন্ট করতে পারেন:
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find;
my @wanted_files;
find(
sub{
-f $_ && $_ =~ $ARGV[0]
&& push @wanted_files,$File::Find::name
}, "."
);
foreach(@wanted_files){
print "$_\n"
}
এবং এটি কীভাবে কাজ করে:
$ ./find_file.pl "postgis-2.0.0"
./testdir/texts/postgis-2.0.0
পাইথন
পাইথন হ'ল অন্য স্ক্রিপ্টিং ভাষা যা উবুন্টু বিশ্বে খুব ব্যাপকভাবে ব্যবহৃত হয়। বিশেষত, এটিতে os.walk()
মডিউল রয়েছে যা আমাদের উপরের মতো একই ক্রিয়াটি সম্পাদন করতে দেয় - ট্র্যাভার্স ডিরেক্টরি ট্রি এবং পছন্দসই স্ট্রিংযুক্ত ফাইলগুলির তালিকা অর্জন করে।
ওয়ান-লাইনার হিসাবে এটি করা যেতে পারে:
$ python -c 'import os;print([os.path.join(r,i) for r,s,f in os.walk(".") for i in f if "postgis-2.0.0" in i])'
['./testdir/texts/postgis-2.0.0']
সম্পূর্ণ স্ক্রিপ্টটি দেখতে এমন হবে:
#!/usr/bin/env python
import os;
for r,s,f in os.walk("."):
for i in f:
if "postgis-2.0.0" in i:
print(os.path.join(r,i))
locate
কমান্ড জরিমানা, শুধু locatedb প্রথম আপডেট করতে, কমান্ড ব্যবহার করেupdatedb