我该如何对以下代码中的多列进行排序?
目前,代码的步骤如下:
1. 获取目录
2. 使用正则表达式获取
3. 将(2)中的三个值以固定宽度的形式打印在三列中。
4. 然后打印出文件总数和目录大小。
我希望输出按以下方式排序:
1. 先按
2. 再按
3. 最后按
目前,代码的步骤如下:
1. 获取目录
$directory
中文件的列表@list
2. 使用正则表达式获取
@list
中每个元素的$fileName
、$fileLocation
和$fileSize
3. 将(2)中的三个值以固定宽度的形式打印在三列中。
4. 然后打印出文件总数和目录大小。
我希望输出按以下方式排序:
1. 先按
$fileName
排序2. 再按
$fileLocation
排序3. 最后按
$fileSize
排序。$directory = '/shared/tmp';
$count = 0;
@list = qx{du -ahc $directory};
printf ("%-60s %-140s %-5s\n", "Filename", "Location", "Size");
foreach(@list) {
chop($_); # remove newline at end
if (/^(.+?K)\s+(.+\/)(.+\.[A-Za-z0-9]{2,4})$/) { # store lines with valid filename into new array
# push(@files,$1);
$fileSize = $1;
$fileLocation = $2;
$fileName = $3;
if ($fileName =~ /^\./) {
next; }
printf ("%-60s %-140s %-5s\n", $fileName, $fileLocation, $fileSize);
$count++;
}
else {
next;
}
}
print "Total number of files: $count\n";
$total = "$list[$#list]";
$total =~ s/^(.+?)\s.+/$1/;
print "Total directory size: $total\n";