ترفند لينوکسي
فولدريابي
پيداکردن فايل‌هاي بزرگ در سيستم با استفاده از دستورهايي چون find ساده است. اما اگر به‌دنبال دايرکتوري‌هايي مي‌گرديد که حجم آن‌ها از ميزان مشخصي بيشتر است، در اين صورت دستور find هم نمي‌تواند کمک‌تان کند. اما با کمک اين اسکريپت ساده مي‌توانيد دايرکتوري‌هاي بزرگ را هم بيابيد.

اين اسکريپت چند انتخاب دارد که مي‌توانيد از آن‌ها استفاده کنيد، اين انتخاب‌ها به صورت زيرند:

- اگر -d را جلوي دستور بزنيد، دايرکتوري پايه تا جستجو را نشان مي‌دهد.

- اگر -t را انتخاب کنيد، آستانه حجم را به مگابايت محاسبه مي‌کند.

- اگر -x را زديد، الگوهايي از جستجو را ناديده مي‌گيرد.

به دستور زير دقت کنيد:

$ ./file.pl -d ../../ -t 100 -x simulator*

اين دستور دايرکتوري‌هايي که تا دو سطح بالاتر از دايرکتوري فعلي قرار دارند را جستجو کرده و آن‌هايي که حجم بيشتر از ??? مگابايت دارند را انتخاب مي‌کند. اگر اين دايرکتوري‌ها با نام simulator شروع شوند، آن‌ را در فهرست نمي‌آورد.

کد زير را داخل يک فايل متني کپي کرده و سپس با فرمت .pl ذخيره کنيد.

#!/usr/bin/perl -w

use Getopt::Std;

use Cwd 'abs_path';

my %dir;

getopt("dtx",\%dir);

if(!defined $dir{d}){

        print "Usage: program -d dir

[-t threshhold] [-x exclude pattern]\n";

        exit 1;

}

if(!defined $dir{t}){

        $dir{t}=1000;

}

my $f=abs_path($dir{d});

my $cmd="du -m -c $f";

 

if(defined $dir{x}){

      $cmd=$cmd." --exclude=$dir{x}";

}

my $line=`$cmd`;

while($line=~/(\d+)\s+([&~#@&\r\n]+)\r?\n/g){

        if($1»$dir{t}){

                print $1.",".$2."\n";    }

}