Perlを使って、下のようなイメージでディレクトリ内のファイル名と更新日付のみ取得したいと思っております。
(ファイル名)△(更新日付)
最初は、PerlからUNIXコマンドを呼び出してls -ltr の結果を配列に格納し、それから半角スペースを元にsplitして取得しようとしたのですが、
日付が一桁のときと二桁のときでは、配列の位置が異なるため、うまくいかないのです。
また、stat関数を使ったのですが、情報はなにも取得されません。理由は不明です。
他に良い方法をご存知の方、御教示願えないでしょうか?
ちなみにPerlのバージョンは4、OSはHP-UXです。
情報不足だったり意味が分からなかったら追記いたします。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
statで情報が取得できなかったということですが、
どのようにstatを使用しましたでしょうか。
以下は、ARGV[0]にファイ名を与えた時に、
更新時刻を求めるスクリプトです。
--------------------------------
$filename = $ARGV[0];
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat($filename);
print("modify time=$ctime\n");
($sec,$min,$hour,$day,$month,$year,$wday,$yday,$idst)=localtime($ctime);
$yy = $year + 1900;
$mm = $month + 1;
print("modify time=$yy-$mm-$day $hour:$min:$sec\n");
--------------------------------
Perlのバージョンは4、OSはHP-UXで確認済です。
#1のかたが言われているように、statに正しいファイル名を指定しなければ当然、正しい結果は、得られません。まずは、正しいファイルを指定しているか、確認なさって下さい。
No.5
- 回答日時:
#3です。
#4の方のおっしゃるとおりです。
更新時刻は$mtimeを使用して下さい。
大変、貴重なご指摘、ありがとうございました。
間違いましたので、自信なし。
No.2
- 回答日時:
やはり、statを使うといいと思います。
statが取得できないのは、ワークディレクトリが違うとか言うことはないでしょうか
一応statを使った現在ディレクトリ(.)のファイル名と更新日付の表示するものを作ってみました。
opendir(aDir, ".");
foreach(grep(!/^\.{1,2}$/,readdir(aDir))){
my @ltime = localtime((stat $_ )[9]);
my $modifyTime = sprintf("%d年%d月%d日%02d時%02d分%02d秒",
$ltime[5]+1900,$ltime[4]+1,$ltime[3],$ltime[2],$ltime[1],$ltime[0]);
print "$_ $modifyTime\n";
}
closedir(wkDir);
No.1
- 回答日時:
全然わかりませんが、statで情報が取得できなかったということで・・・
経験上、その手の処理でわりとよく見るケアレスミスがありますので該当していないか確認してください。
opendir DIR,$path;
while ($entry = readdir DIR ) {
@status = stat $entry;
~~~
}
close DIR;
↑このようなミスをしている場合がある。
@status = stat "$path/$entry";
が正解。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
- その他(コンピューター・テクノロジー) batファイルでPCの設定内容やプロパティーを取得したいのですが、コマンド1個で1ファイルとなるのを 2 2022/04/27 15:27
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batファイルでrenameができませ...
-
Windowsで複数のファイルを同じ...
-
readdir()で得られるファイル・...
-
パスから最後のディレクトリだ...
-
C言語でファイル名を取得
-
ディレクトリの判別
-
Rubyでフォルダ内にあるファイ...
-
ディレクトリのファイル作成を...
-
window.open でのファイル指定方法
-
awkスクリプトでダブルクォーテ...
-
ExcelをCSV書き出す場合のシー...
-
csvファイルの横方向への改行に...
-
Perlで空白行を削除
-
perlにて2つのファイル比較
-
動かなくなったのでJavaソース...
-
DOSコマンドで、標準出力を出力...
-
バッチファイルの作り方(CSV→...
-
fgets で値が取得できない
-
全角と半角文字が混在している...
-
VBAでCSVファイルを途中行まで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルでrenameができませ...
-
FindFirstFileとFindNextFileで...
-
ディレクトリの判別
-
Windowsで複数のファイルを同じ...
-
vba dir の相対パス
-
パスから最後のディレクトリだ...
-
chdirがうまくできない
-
dos変数の%~dp0は powershellで...
-
テキストファイルの結合
-
Perlで フォルダ内の全て...
-
readdir()で得られるファイル・...
-
makefileでファイルをコピー(...
-
サーバーにある特定の拡張子フ...
-
ディレクトリツリーの表示
-
C言語でファイル名を取得
-
ファイル名と更新日付の取得に...
-
複数ファイルの読み込みについて
-
LinuxのC言語で、ファイル名の...
-
Director拡張子
-
ディレクトリ名を取得したい
おすすめ情報