Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

$B%U%!%$%k$N40A4$J(B mtime $B$rF@$k(B

0 views
Skip to first unread message

ka...@sra-tohoku.co.jp

unread,
Oct 26, 2002, 2:16:27 PM10/26/02
to
なんか FAQ のような気がするんですが

ls -l でファイルの更新時刻を取ろうとしても、
6ヶ月以上前のものは "%b %d %Y" になってしまい時刻まで取れません。

NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?

#もちろんstat().mtimeするバイナリを書けばいいんだがそれは反則
#perl,tclなんかも反則とします
--
kabe

岡田 健一

unread,
Oct 26, 2002, 5:38:15 PM10/26/02
to
おかだです。

In the message <420427032002...@sra-tohoku.co.jp>
<ka...@sra-tohoku.co.jp> wrote:

> ls -l でファイルの更新時刻を取ろうとしても、
> 6ヶ月以上前のものは "%b %d %Y" になってしまい時刻まで取れません。
>
> NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
> shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?
>
> #もちろんstat().mtimeするバイナリを書けばいいんだがそれは反則
> #perl,tclなんかも反則とします

find -type f -print "%TY/%Tm/%Td %TH:%TM:%TS\n"
とか.

--
岡田 健一 mailto:ok...@opaopa.org

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Oct 26, 2002, 8:41:44 PM10/26/02
to
久野です。

ka...@sra-tohoku.co.jpさん:


> NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
> shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?

FreeBSDのlsにも「-T」はあるようです。ということはBSD 4.4くらい
からあったりしないのかな。

汎UNIXとは、とうい話になったりして。 久野

岡田 健一

unread,
Oct 26, 2002, 9:00:04 PM10/26/02
to
おかだです。

In the message <apfco8$4...@utogw.gssm.otsuka.tsukuba.ac.jp>
ku...@gssm.otsuka.tsukuba.ac.jp wrote:

> > NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
> > shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?

> FreeBSDのlsにも「-T」はあるようです。ということはBSD 4.4くらい
> からあったりしないのかな。

GNU fileutils の ls では --full-time のようです.
Solaris の ls には、なさげです.

NIDE Naoyuki

unread,
Oct 26, 2002, 11:04:54 PM10/26/02
to
In article <sgvg3...@opaopa.org>, ok...@opaopa.org writes:
> > FreeBSDのlsにも「-T」はあるようです。ということはBSD 4.4くらい
> > からあったりしないのかな。
> GNU fileutils の ls では --full-time のようです.
> Solaris の ls には、なさげです.

一時期、GNUのlsでは-eが--full-timeと同義だったらしいです。今はないです
ね。-TはGNUのlsだと--tabsizeと同義なのでややこしい。

これまた「汎UNIXとは」という話になりそうですが、touchで特定のタイムス
タンプの空ファイルを作成してはtest -ntで対象ファイルと比較し、二分法で対
象ファイルのタイムスタンプを求めるというのをふと思いつきました。

ni...@ics.nara-wu.ac.jp

NIDE Naoyuki

unread,
Oct 26, 2002, 11:57:12 PM10/26/02
to
In article <apfl4m$mth$1...@caraway.media.kyoto-u.ac.jp>, I write:
> これまた「汎UNIXとは」という話になりそうですが、touchで特定のタイムス
> タンプの空ファイルを作成してはtest -ntで対象ファイルと比較し、

これはだめですね。昔のUNIXのtouchは秒単位を指定できないのでした。

ni...@ics.nara-wu.ac.jp

Yoshihiko SARUMARU

unread,
Oct 27, 2002, 4:48:56 AM10/27/02
to
 猿丸です。

fj.unix.shells の <apg73e$9...@utogw.gssm.otsuka.tsukuba.ac.jp> の記事において
2002-10-27(日) 17:11頃、ku...@gssm.otsuka.tsukuba.ac.jpさんは書きました。

> 久野です。
>
> ni...@ics.nara-wu.ac.jpさんは書きました。
> > これはだめですね。昔のUNIXのtouchは秒単位を指定できないのでした。
>
> dateでその時分秒になって作るというのは? :-) 久野

TZ をずらしながら日付が変わるoffset を調べるというのは? :-)

mistral% env TZ=___-14:49:7 ls -l /COPYRIGHT
-r--r--r-- 1 root wheel 4735 4 21 2001 /COPYRIGHT
mistral% env TZ=___-14:49:8 ls -l /COPYRIGHT
-r--r--r-- 1 root wheel 4735 4 22 2001 /COPYRIGHT

# TZ なしだと 2001.04.21 09:10:52 のファイル

shell script で実装するのは面倒そう……

--
猿丸芳彦 (Yoshihiko SARUMARU)
mail: mis...@imasy.or.jp web: http://www.imasy.or.jp/~mistral/

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Oct 27, 2002, 3:11:26 AM10/27/02
to

Tadamasa Tamura

unread,
Oct 27, 2002, 5:48:11 AM10/27/02
to
田村です。

<ka...@sra-tohoku.co.jp> wrote in message
news:420427032002...@sra-tohoku.co.jp...


> ls -l でファイルの更新時刻を取ろうとしても、
> 6ヶ月以上前のものは "%b %d %Y" になってしまい時刻まで取れません。
>
> NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
> shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?

tar cf - ファイル名 | tar tvf -
とか?
(デカいファイルだと、全然嬉しくないけど…)

Masamichi Takatsu

unread,
Oct 27, 2002, 11:03:36 AM10/27/02
to
高津@ドーガです。

記事 <3DBBC46B...@coral.ocn.ne.jp> で
Tadamasa Tamuraさんは書きました

> tar cf - ファイル名 | tar tvf -
> とか?
> (デカいファイルだと、全然嬉しくないけど…)

それなら、エラーは無視するとして
tar cf - ファイル名 | head -c 512 | tar tvf -
はどうでしょうか?

PROJECT TEAM DoGA 高津正道 ta...@doga.jp
TBD0...@nifty.ne.jp
PROJECT TEAM DoGAのホームページ → http://doga.jp/
10月28日(月) 今日のマーフィーの法則 [一般法則]
宇宙の混沌は常に増大している。

Hidetoshi Narumi

unread,
Oct 27, 2002, 7:38:24 AM10/27/02
to
なるみです。

ka...@sra-tohoku.co.jp wrote:
> ls -l でファイルの更新時刻を取ろうとしても、
> 6ヶ月以上前のものは "%b %d %Y" になってしまい時刻まで取れません。
>
> NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
> shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?
>
> #もちろんstat().mtimeするバイナリを書けばいいんだがそれは反則
> #perl,tclなんかも反則とします

日付の表示形式が共通かどうかわかりませんが
tar コマンドは使えないでしょうか?

$ tar -cf - files | tar -tvf -

Digital UNIX V4.0D では秒まで表示されます。

--
NARUMI,Hidetoshi

MOCHIDA Shuji

unread,
Oct 27, 2002, 9:26:48 PM10/27/02
to

持田@NETside です。

> tar cf - ファイル名 | head -c 512 | tar tvf -
> はどうでしょうか?

ウチでは head に -c が使えませんでした。ということで

tar cf - ファイル名 | dd count=1 | tar tvf -

--
持田 修司 NETside Technologies Inc.
-- Equal Opportunity for All Good Architectures, NetBSD. --

NIDE Naoyuki

unread,
Oct 27, 2002, 10:14:25 PM10/27/02
to
In article <3DBBDE...@ff.iij4u.or.jp>, be...@ff.iij4u.or.jp writes:
> $ tar -cf - files | tar -tvf -
> Digital UNIX V4.0D では秒まで表示されます。

solarisの/bin/tarでは秒まで出ないようです。
ni...@ics.nara-wu.ac.jp

Koichi Yasuoka

unread,
Oct 28, 2002, 1:18:38 AM10/28/02
to
 京都大学人文科学研究所附属漢字情報研究センターの安岡です。

>ls -l でファイルの更新時刻を取ろうとしても、
>6ヶ月以上前のものは "%b %d %Y" になってしまい時刻まで取れません。
>NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
>shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?

 私は、たいていは

diff -c ファイル名 /dev/null | head -1

でやっつけて、それがダメそうな相手には

pr ファイル名 | head -3

という技ですませます。ただ、prは秒が出ないので、完全じゃないですが…。
=======================================================================
安岡孝一@京都大学人文科学研究所附属漢字情報研究センター
http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/
=======================================================================

ka...@sra-tohoku.co.jp

unread,
Oct 28, 2002, 1:34:35 AM10/28/02
to
>> find -type f -print "%TY/%Tm/%Td %TH:%TM:%TS\n"

(-printfて)GNU findの独自機能ですよね?
--
kabe

Kazuo Fox Dohzono

unread,
Oct 28, 2002, 1:42:02 AM10/28/02
to
In article <apikru$if1$1...@caraway.media.kyoto-u.ac.jp>
yas...@kanji.zinbun.kyoto-u.ac.jp (Koichi Yasuoka) writes:

> diff -c ファイル名 /dev/null | head -1

ファイルサイズが 0 だと….

# 私なら作るかパッチあてるかだなあ. いくらフィルタ文化圏だといっても目
# 的に対してコストが見合っていない気がする.
--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp

NIDE Naoyuki

unread,
Oct 28, 2002, 1:48:55 AM10/28/02
to
In article <apim46$2kl5$1...@news2.rim.or.jp>,

doh...@hf.rim.or.jp writes:
> > diff -c ファイル名 /dev/null | head -1
> ファイルサイズが 0 だと….

バイナリファイルとかディレクトリの場合にも困りますよね。

> # 私なら作るかパッチあてるかだなあ. いくらフィルタ文化圏だといっても目
> # 的に対してコストが見合っていない気がする.

まあ、条件が「作るのは反則」となっている時点で実用性は別ということで。

ni...@ics.nara-wu.ac.jp

ka...@sra-tohoku.co.jp

unread,
Oct 28, 2002, 1:49:20 AM10/28/02
to
やっぱ「ふつー」の方法ではむつかしいようですね。

tar というのは盲点でしたが

<aph2oo$2qdp$1...@maha2.doga.co.jp>の記事において
ta...@doga.jpさんは書きました。

>> > tar cf - ファイル名 | tar tvf -
>> > とか?
>> > (デカいファイルだと、全然嬉しくないけど…)
>>
>> それなら、エラーは無視するとして
>> tar cf - ファイル名 | head -c 512 | tar tvf -

これでもデカいファイルでは嬉しくないことには変わりない
んですが
touch -r target tmp
tar cf - tmp | tar tvf -
という合わせ技を思いつきました。

あとは tar v の出力形式にどのくらいバリエーションがあるかですかね。

Solaris:
-rw-r--r-- user/group 0 2000-01-01 00:00 tmp
GNU tar: (同じかい…)
-rw-r--r-- user/group 0 2000-01-01 00:00 tmp

秒まではとれんよーですが。

#うまくすればawk使わなくても set -- だけで切り出せるか?
--
kabe

NIDE Naoyuki

unread,
Oct 28, 2002, 1:52:34 AM10/28/02
to
In article <apim46$2kl5$1...@news2.rim.or.jp>, doh...@hf.rim.or.jp writes:
> > diff -c ファイル名 /dev/null | head -1
> ファイルサイズが 0 だと….

バイナリファイルとかディレクトリの場合にも困りますよね。

> # 私なら作るかパッチあてるかだなあ. いくらフィルタ文化圏だといっても目
> # 的に対してコストが見合っていない気がする.

まあ、条件が「バイナリを作るのは反則」となっている時点で、実用性は度外
視ということで。
ni...@ics.nara-wu.ac.jp

NIDE Naoyuki

unread,
Oct 28, 2002, 2:05:28 AM10/28/02
to
In article <205028200215...@sra-tohoku.co.jp>,
ka...@sra-tohoku.co.jp writes:
> やっぱ「ふつー」の方法ではむつかしいようですね。

今時「ふつー」はperlで一発なんではないでしょうか。UNIX汎用に限るから難
しいわけで。

> GNU tar: (同じかい…)
> -rw-r--r-- user/group 0 2000-01-01 00:00 tmp

手元のGNU tar 1.13.25は秒まで吐きますが…
ni...@ics.nara-wu.ac.jp

Shinji KONO

unread,
Oct 28, 2002, 4:24:43 AM10/28/02
to
河野 真治@琉球大情報工学です。

In article <apikru$if1$1...@caraway.media.kyoto-u.ac.jp>, yas...@kanji.zinbun.kyoto-u.ac.jp (Koichi Yasuoka) writes


> diff -c ファイル名 /dev/null | head -1

う、こんなに使うくらいだったらC/Perl で書いているな。

もともとのC/Perlはだめってのは、どうしてそういう制限なんだろう?
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球大学工学部情報工学科,
科学技術振興事業団さきがけ研究21(機能と構成)

Masamichi Takatsu

unread,
Oct 28, 2002, 4:46:13 AM10/28/02
to
高津@ドーガです。

記事 <205028200215...@sra-tohoku.co.jp> で
kabeさんは書きました


> > それなら、エラーは無視するとして
> > tar cf - ファイル名 | head -c 512 | tar tvf -
> これでもデカいファイルでは嬉しくないことには変わりない
> んですが

head なり dd なりが読み込みを終わらせた時点で、
SIGPIPE で tar cf の方は終了しますから、
デカいファイルが対象でも実行はすぐに終わります。

それとも、他に嬉しくないことがあるのでしょうか?

Kazuo Fox Dohzono

unread,
Oct 28, 2002, 5:08:20 AM10/28/02
to
In article <apimrh$jpu$1...@caraway.media.kyoto-u.ac.jp>
ni...@ics.nara-wu.ac.jp (NIDE Naoyuki) writes:

> > > diff -c ファイル名 /dev/null | head -1

> 実用性は度外視

安岡さんは実際に用いられているようですよ.

# どうせならシステムコールを呼び出す *だけ* のプログラム群を作ってパイ
# プで繋げて… :-)

Takashi SHIRAI

unread,
Oct 28, 2002, 11:55:25 AM10/28/02
to
 しらいです。

In article <3DBBC46B...@coral.ocn.ne.jp>,
Tadamasa Tamura <ta...@coral.ocn.ne.jp> wrote:
>田村です。

>> NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
>> shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?
>
>tar cf - ファイル名 | tar tvf -

 OpenBSD や Darwin の tar は pax 由来の実装になっているよう
で、ls の出力と同様、時刻情報と年情報とを共用しているみたい
ですけど。
 UNIX 標準コマンドでも、ちょっと複雑なものになると些末の仕
様が OS 依存になってしまうことが多いですね。

--
しらい たかし

Tadamasa Tamura

unread,
Oct 28, 2002, 2:49:42 PM10/28/02
to
田村です。

"Takashi SHIRAI" <shi...@nintendo.co.jp> wrote in message
news:apjq2t$edf$1...@nsvn01.zaq.ne.jp...
>  しらいです。


>
> >> NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
> >> shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?
> >
> >tar cf - ファイル名 | tar tvf -
>
>  OpenBSD や Darwin の tar は pax 由来の実装になっているよう
> で、ls の出力と同様、時刻情報と年情報とを共用しているみたい
> ですけど。

ありゃりゃ。
まだ、胃^H井の中の蛙でしたか。

やはりここは、「スーパーユーザになって、日付を戻す」しかっ。

#でも、日付の前後関係だけなら、ls -tでも維持するはずだよなぁ…

ka...@sra-tohoku.co.jp

unread,
Oct 28, 2002, 6:00:17 PM10/28/02
to
<apj115$6rh$1...@maha2.doga.co.jp>の記事において
ta...@doga.jpさんは書きました。

>> SIGPIPE で tar cf の方は終了しますから、
>> デカいファイルが対象でも実行はすぐに終わります。
>> それとも、他に嬉しくないことがあるのでしょうか?

パイプがバッファリングを行っていると、カーネルにいらん負荷が
かかるような気がしたので。
まバッファがあっても4kB単位とかでしょうから
普通はたいしたことないんでしょうけど。
#バッファつきパイプは違反(何のだ)でしたっけ

SIGPIPEを無視するtarはないと思いますが
--
kabe

NIDE Naoyuki

unread,
Oct 28, 2002, 8:28:55 PM10/28/02
to
いっそtar cf - filenameの出力をod -vして、ヘッダ部分をawkあたりで解析
するとか。時刻情報自体は秒単位まで記録されているでしょうから。

# tarのヘッダのフォーマットのバリエーションっていくつくらいあるんでしょう

ni...@ics.nara-wu.ac.jp

Tanaka Akira

unread,
Oct 28, 2002, 11:00:49 PM10/28/02
to
In article <apko8n$r0s$1...@caraway.media.kyoto-u.ac.jp>,
ni...@ics.nara-wu.ac.jp (NIDE Naoyuki) writes:

> いっそtar cf - filenameの出力をod -vして、ヘッダ部分をawkあたりで解析
> するとか。時刻情報自体は秒単位まで記録されているでしょうから。

tar cf - filename|dd bs=1 skip=136 count=12

ですかねぇ。ただ、time_t な値が 8進で記録されているだけなので、
年月日時分秒に変換する必要がありますが、awk とかで変換できましたっけ?

> # tarのヘッダのフォーマットのバリエーションっていくつくらいあるんでしょう

基本的には、オリジナルの形式から POSIX と GNU に分岐していると言うかん
じだと思います。細かくは GNU のがいくつかあったり、star が POSIX と
GNU の形式をちゃんぽんでつかうとかいろいろあるようですけれど。
--
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です⊇」(Little Worker, 桂遊生丸)

Tanaka Akira

unread,
Oct 29, 2002, 6:39:30 AM10/29/02
to
In article <420427032002...@sra-tohoku.co.jp>,
<ka...@sra-tohoku.co.jp> writes:

> NetBSDのlsなんかは ls -T で完全なmtimeとれるみたいですが、
> shell+汎UNIXなコマンドでは「できない」てことでいいんでしょうか?

結局、問題は秒をいかに得るかというわけですが、不可能ではない気がしたの
で、なんとなく線形探索で求めてみました。まぁ、2分探索にすることもでき
るでしょうし、POSIX に従った(閏秒のない)環境を前提にするなら、探索する
までもなく mtime % 60 で済む話ではありますが。

なお、tar を使ってもいいと思うんですが、バイナリを扱うのは厄介なので、
ar を使いました。そのため、大きなファイルについて非効率極まりない上、
ファイル名に空白が入っていたり、昔の(current ar archive でないフォーマッ
トを扱う) ar だと動かない気もします。また、後から気がついたのですが、
current ar archive を扱うこともできないようで... やっぱ tar のほうがま
しだったかもしれません。

#!/bin/sh

tmp=/tmp/mtime.a

filename=$1

rm -f $tmp
ar cq $tmp $filename
mdhm="`ar tv $tmp|awk '{print $(NF-4) \" \" $(NF-3) \" \" $(NF-2)}'`"
year=`ar tv $tmp|awk '{print $(NF-1)}'`
#echo "$mdhm $year"

mtime=`awk 'NR == 2 {print $2}' $tmp`
#echo $mtime

for i in 0 1 2 3 4 5 6 7 8 9 \
10 11 12 13 14 15 16 17 18 19 \
20 21 22 23 24 25 26 27 28 29 \
30 31 32 33 34 35 36 37 38 39 \
40 41 42 43 44 45 46 47 48 49 \
50 51 52 53 54 55 56 57 58 59 \
60
do
awk "BEGIN {print \"!<arch>\"; printf(\"%-16s%-12d%-6d%-6d%-8o%-10d\`\n\", \"dummy/\", $mtime + $i, 0, 0, 0644, 0)}" /dev/null > $tmp
if [ "`ar tv $tmp|awk '{print $(NF-4) \" \" $(NF-3) \" \" $(NF-2) \" \" $(NF-1)}'`" != "$mdhm $year" ]; then
break
fi
done

sec=`awk "BEGIN {printf(\"%02d\", 60 - $i)}"`
echo "$mdhm:$sec $year"

rm $tmp

Koichi Yasuoka

unread,
Oct 29, 2002, 8:33:23 PM10/29/02
to
 京都大学人文科学研究所附属漢字情報研究センターの安岡です。
田中哲さんのスクリプトに刺激されて、こんなの書いてみました。

#! /bin/sh
TMP=/tmp/checkdate$$
for F
do touch -r $F $TMP &&
echo x | diff -c $TMP - | sed -e 's?^*** '$TMP'?'$F'?' -e q
done
rm -f $TMP
exit 0

でも、touch -rって一般的なのかしらん…。

ka...@sra-tohoku.co.jp

unread,
Oct 30, 2002, 4:41:07 AM10/30/02
to
<apnct3$amr$1...@caraway.media.kyoto-u.ac.jp>の記事において
yas...@kanji.zinbun.kyoto-u.ac.jpさんは書きました。

>> でも、touch -rって一般的なのかしらん…。

ソースとか漁ってみたら
ぬあんと 4.4BSD-Lite 以降の機能のようです。
(それ以前の touch には -c と -f しかない…)

#総合的な調査には意外と "FreeBSD Hypertext Man Pages" が便利
<URL:http://www.freebsd.org/cgi/man.cgi>

--
kabe

Tanaka Akira

unread,
Oct 30, 2002, 5:14:55 AM10/30/02
to
In article <apnct3$amr$1...@caraway.media.kyoto-u.ac.jp>,
yas...@kanji.zinbun.kyoto-u.ac.jp (Koichi Yasuoka) writes:

> でも、touch -rって一般的なのかしらん…。

http://www.FreeBSD.org/cgi/man.cgi でいろいろ調べてみると...

4.3BSD Reno
Minix 2.0
Plan 9
SunOS 4.1.3 (普通のも /usr/5bin も)
ULTRIX 4.2
Unix Seventh Edition

のマニュアルには載っていません。SunOS 4.1.3 で動かないとなると、(個人
的な感覚では)あまり「汎UNIX」的な感じはしませんね。

ついでにいえば、diff -c は

Plan 9
Unix Seventh Edition

にはないようです。Unix Seventh Edition を「汎UNIX」に含めるかどうかは
難しいところですが、含めるとなると diff -c も使えませんね。

また、Unix Seventh Edition の /usr/src/cmd で ctime などを grep してみ
たのですが、素直に秒まで出力してくれそうな物は見当たりませんでした。お
そらく、探索をせざるを得ないのではないかと思います。でも、私が書いたス
クリプトも ar の format の違いにより Unix Seventh Edition では動かない
はずではありますが。(ついでにいえばあのスクリプトは閏秒のあるあたりで
1秒ずれる問題があります。なので、実際には使わないように... ってそんな
人がいるわけないか。)

ka...@sra-tohoku.co.jp

unread,
Nov 1, 2002, 2:13:23 AM11/1/02
to
ネタ切れのようなのでとりあえずまとめます。

お題:


ls -l でファイルの更新時刻を取ろうとしても、
6ヶ月以上前のものは "%b %d %Y" になってしまい時刻まで取れません。

shell+汎UNIXなコマンドで完全なmtimeを得られるか?
(perlや専用バイナリ作成は反則とする)

▼直接法

・自明な解(環境依存):
NetBSD: ls -T
GNU ls: ls --full-time

・diff -c を使う
<apikru$if1$1...@caraway.media.kyoto-u.ac.jp>

diff -c ファイル名 /dev/null | head -1

ctime() のようなので出力の環境依存は少なそう
汎用には空ファイルやバイナリ対応が課題

・pr のヘッダを見る
<apikru$if1$1...@caraway.media.kyoto-u.ac.jp>

pr ファイル名 | head -3

HH:MMまで

・tar tvf の出力を使う
<3DBBC46B...@coral.ocn.ne.jp>

tar cf - file | tar tvf -

環境によっては秒までとれない
大きなファイルでは嬉しくない
→ddで切る、touch -rで小さいファイルを作って使う

・tar の出力を直接解析
<hvo3cqp...@flux.a02.aist.go.jp>

tar cf - filename|dd bs=1 skip=136 count=12

8進数の time_t を年月日時分秒に戻せるかが課題

▼間接法

・TZを秒単位でずらしてlsの出力を比較する
TZ自体をサポートしてないと…

・HH:MMまでは tar (ar) で得て、残りは秒だけずらした ar ファイルを
でっちあげてar tv の変化点を見て秒を得る
<hvon0ox...@flux.a02.aist.go.jp>

落とし穴:
・touch -r (mtimeの同じファイルを作る)は 4.4BSD-Lite以降のみ。
SunOS4とかでは使えない。
・touch -t (mtimeを偽造する)は使えない環境や秒まで指定できない環境がある
・tar tvf は秒が出るものと出ないものがある
・UNIX 7th ed. でも使える方法はないかもしれない

--
kabe

0 new messages