Bagaimana mencari direktori dengan saiz tertentu


Adalah cukup mudah bagi kita mencari fail besar dalam sistem pengoperasian Linux menggunakan arahan "find", tetapi jika anda mencari direktori dengan saiz tertentu, arahan "find" tidak akan membantu anda. Skrip Perl yang dipaparkan di sini dapat membantu anda mengesan direktori-direktori besar yang hampir dah meletup tu.

Skrip tersebut akan memaparkan suatu direktori pada laluan tertentu yang ukurannya melebihi ambang tertentu.

Ia juga membolehkan anda mengecualikan direktori-direktori yang bersesuaian dengan corak tertentu mengikut pertimbangan.

Tanpa membuang lebih banyak masa, ayuh kita ikuti panduan berikut.

1. Salin kod sumber skrip Perl

Berikut ada kod sumber bagi skrip yang berkenan arahan yang dinyatakan. Salin dan tampal kod sumber di bawah ini ke mana-mana "text editor" yang biasa digunakan, kemudian simpan ia sebagai "file.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";
 }
}

2. Tukar mod dan jalankan skrip tersebut 

Sesudah itu, tukarkan modnya kepada "executable" bagi membolehkan ia berfungsi seperti contoh yang diberikan di bawah ini:

$ chmod +x file.pl

Skrip ini menggunakan arahan "du" untuk mendapatkan maklumat berkenaan saiz. Corak yang dikecualikan dihantar terus kepada arahan "du". Ia kemudian memproses output dari "du" dan memaparkan direktori-direktori yang lebih besar daripada ambang.

Arahan bagi skrip tersebut menerima pilihan-pilihan seperti berikut:

-d - Menentukan asas pencarian suatu direktori.
-t - Menentukan ambang dalam megabait, misalnya 100 == 100MB.
-x - Menentukan corak-corak untuk diabaikan (corak glob).

Contoh-contoh berikut menunjukkan bagaimana ianya digunakan:

$ ./file.pl -d ../ -t 100 -x '{pr*,jd*,tp*,sim*}'
165,/home/thenone/CMS/apache-tomcat-6.0.13/logs
274,/home/thenone/CMS/apache-tomcat-6.0.13
318,/home/thenone/CMS
400,/home/thenone/apache-tomcat-6.0.13/bin
417,/home/thenone/apache-tomcat-6.0.13
909,/home/thenone
909,total-

$ ./file.pl -d . -t 100 -x simulator*
178,/home/thenone/CMS/apache-tomcat-6.0.13/logs
289,/home/thenone/CMS/apache-tomcat-6.0.13
333,/home/thenone/CMS
400,/home/thenone/apache-tomcat-6.0.13/bin
422,/home/thenone/apache-tomcat-6.0.13
757,/home/thenone/project/cpp/fileTrans
766,/home/thenone/project/cpp
334,/home/thenone/project/log/tmp
492,/home/thenone/project/log
391,/home/thenone/project/store/array
391,/home/thenone/project/store
1755,/home/thenone/project
133,/home/thenone/tptp/config
200,/home/thenone/tptp
105,/home/thenone/jdk
2994,/home/thenone
2994,total

Nota: Arahan ini juga boleh dikombinasikan bersama arahan "sudo", misalnya: "sudo .file.pl . -d -t 100 -x *"

Wallahu 'alam

Perhatian: Kami tidak akan bertanggungjawap atas sebarang kejadian atau kesan yang dialami oleh anda dan sistem anda. Segala panduan yang terdapat dalam laman blog ini adalah bersifat ujikaji dan panduan. Anda bertanggungjawap sepenuhnya atas sebarang kemungkinan yang berlaku terhadap sistem anda. Sekian harap maklum..

~ Admin Malaya Linux
Reactions

Post a Comment

0 Comments