අතර find
විධාන ඇත්තෙන් වෙනසට භාජනය බහලුම ගස තරණය කිරීමට පහසුම ක්රමය වන්නේ, වෙනත් ක්රම ඇත, විශේෂයෙන් පෙරනිමියෙන් උබුන්ටු සමග එන පිටපත් භාෂා දෙකක් දැනටමත් එසේ කිරීමට හැකියාව ඇත.
bash
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
පර්ල්
පර්ල් සතුව Find මොඩියුලය ඇත, එමඟින් ඩිරෙක්ටරි ගසෙහි පුනරාවර්තන ගමන් කිරීමට ඉඩ සලසයි, සහ සබ්ට්රවුටින් හරහා ඒවාට නිශ්චිත ක්රියා සිදු කරයි. කුඩා ස්ක්රිප්ටයක් සමඟ, ඔබට ඩිරෙක්ටරි ගස හරහා ගමන් කළ හැකිය, අපේක්ෂිත නූල් අඩංගු ගොනු අරාව තුළට තල්ලු කළ හැකිය, ඉන්පසු එය මුද්රණය කරන්න:
#!/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