Re: [問題] 取得資料夾下的資料夾資料

作者: CindyLinz (Cindy Wang)   2014-10-16 22:47:44
※ 引述《stephen7710 (YA)》之銘言:
: 謝謝你的回答
: 我把ctime放到 %hash的key 資料夾名放到value
: 然後
: foreach $time(sort keys %hash )
: {
: print("$time, $hash{"$time"}\n");
: }
: 類似這樣 可能有些語法有錯請見諒
: 因為取得的ctime是位數的數字ex 1000000000
: 所以可以這樣排 之後再用localtime轉換
拿 $time 當成 hash key 的話, 萬一有同一秒的不同檔案,
這 hash 裡面只會存有其中一個欸 @@"
我會想把它們放在 array of array 或 array of hash 裡面,
例如說.. (這邊是用 array of hash)
my @files;
...
while( ... ) {
my @stat = stat $filename;
push @files, {
filename => $filename,
ctime => $stat[10],
mtime => $stat[9],
uid => $stat[4],
gid => $stat[5],
};
}
然後排序輸出的地方就..
(假設先以 mtime 排序, mtime 一樣時改以 filename 排序)
for my $file (
sort {
$a->{mtime} <=> $b->{mtime} || $a->{filename} cmp $b->{filename}
} @files
) {
print "$file->{filename}: mtime=$file->{mtime}, ctime=$file->{ctime}\n";
}
: 我記得我是用my $user_name = getpwuid($uid);
: print 出來的 $uid 是0或1或2之類的
: 然後去/etc/passwd 看確實對應的就是root那些的
: 不過並不是我ls看到的owner
: /etc/passwd 下也沒有一般的使用者列表
: 謝謝
真神祕, 不知道你 ls 看到的 owner 是怎麼來的..
這個偏系統管理, 作業系統設計的問題, 我就沒那麼熟了 @@"
要不要再檢查一下是不是 $uid 對錯欄位,
可能對到 nlink 或 rdev 了? ^^|
: ※ 引述《CindyLinz (Cindy Wang)》之銘言:
: : 1. 能不能多講一下這個對 hash 排序指的是什麼?
: : 我以為 hash 是讓我們由 key 取得對應的 value,
: : 沒有看出什麼可以控制順序的地方 @@"
: : 2. 的確是用 getpwuid 和 getgrgid,
: : my $user_name = getpwuid($uid);
: : my $group_name = getgrgid($gid);
: : 然後再拿 $user_name 和 $group_name 去用..
: : 我猜你可能用到了 getpwuid($uid) 的 list context 用法.. 像是
: : my @user_data = getpwuid($uid);
: : 這樣拿到的 @user_data 陣列裡面的資料是
: : ($name,$passwd,$uid,$gid,$quota,$comment,$gcos,$dir,$shell,$expire)
: : 然後直接把整個陣列印出來了..
: : 可以看一下 perldoc -f getpwuid 的說明~
: : 當然, 如果 server 上真的沒有存著這一筆 uid 的資料, 那的確還是取不到名字的 @@"

Links booklink

Contact Us: admin [ a t ] ucptt.com