長南洋一
cyoic****@maple*****
2010年 11月 30日 (火) 19:01:47 JST
長南です。 -daystart, -amin, -atime, -anewer など時間関係の述語について、 うまく訳せないところが、三個所あります。 .\"O .IP \-daystart .\"O Measure times (for .\"O .BR \-amin , .\"O .BR \-atime , .\"O .BR \-cmin , .\"O .BR \-ctime , .\"O .BR \-mmin , .\"O and .\"O .BR \-mtime ) .\"O from the beginning of today rather than from 24 hours ago. This .\"O option only affects tests which appear later on the command line. 素直に訳せば、 -amin, -atime, -cmin, -ctime, -mmin, -mtime の時間計算を するとき、基準を 24 時間前ではなく、今日の 0 時に置く。... になります (ほかの解釈もあると思います)。でも、これはかなり あいまいです。-atime などは「何日前」を指定することもあるの ですから。 そこで、こんなふうに原文をかなり離れた作文をしました。 .IP \-daystart .BR \-amin , .BR \-atime , .BR \-cmin , .BR \-ctime , .BR \-mmin , .B \-mtime において、デフォルトでは、今日 (すなわち 0 日前) の始まりは、 今現在から24 時間前になるが、このオプションを設定すると、 コマンドを実行した日の 0 時になる。 このオプションが影響を及ぼすのは、コマンドラインで自分より後に 指定されたテスト式だけである。(訳注: ちょっと変な表現になるが、 .BR \-amin , .BR \-cmin , .B \-mmin のことも考えに入れると、「デフォルトでは時間を計算するときの基準を 今現在に置くが、 .B \-daystart を指定すると、時間計算の基準が今日の 24:00 (あるいは明日の 00:00) になる」 と言えばよいのかもしれない。) 今、こんなバリエーションを思いつきました。 -amin, -atime, -cmin, -ctime, -mmin, -mtime において、 今日の始まりを今現在から 24 時間前ではなく、コマンド実行当日の 0 時にする。 訳例を三つ上げましたが、どれがよいでしょうか。ほかにも案があったら、 お教えください。 それから、「(訳注: ちょっと変な表現になるが ...」以降は、内容的に 正しいでしょうか。一応、自分でいろいろと試していたとき、そんな 動作らしいと気がついたのですが。 # 厳密に言うと、-daystart を設定したときの時間計算の基準は、 # -mmin の場合、翌日の 00:01 のような気がします。 # たとえば、 # # $ touch -t 201011302350 zzz # $ ls -l zzz # -rw-r--r-- 1 cyoichi cyoichi 0 2010-11-30 23:50 zzz # $ find . -daystart -mmin 10 # (何も表示しない) # $ find . -daystart -mmin 11 # ./zzz -atime, -ctime, -mtime と言えば、以下の部分の訳にも頭を悩まして います。 .\"O .IP "\-atime \fIn\fR" .\"O File was last accessed \fIn\fR*24 hours ago. .\"O When find figures out how many 24-hour periods ago the file .\"O was last accessed, any fractional part is ignored, so to match .\"O .B \-atime .\"O .BR +1 , .\"O a file has to have been accessed at least .\"O .I two .\"O days ago. .\"O .IP "\-atime \fIn\fR" ファイルの最終アクセス日時が \fIn\fR*24 時間前の時間帯に当たれば (訳注: すなわち、\fB\-daystart\fR オプションを指定していない場合、 今現在の時刻から計算して n 日前ならば)、真を返す。 \fBfind\fR は、ファイルが最後にアクセスされたのが 24 時間周期で 何周期前かを計算するとき、小数点以下の部分を切り捨てる。 従って、 .B \-atime +1 にマッチするためには、 ファイルは少なくとも二日前にアクセスされていなければならない。 「File was last accessed n*24 hours ago.」をどう訳したら、 よいでしょうか。厳密に言うと、n*24 時間前から、(n+1)*24 時間前の 間でしょう。それで上のようなくどい訳をしました。もっとすっきり した表現はないでしょうか。 「24 時間周期で何周期前かを計算するとき」は「何日前かを計算する とき」で充分かも。でも、24 を残しておきたい気もします。 「何日前かを計算するとき、24 で割って出た小数点以下の部分は 切り捨てる」ぐらいでしょうか。あるいは、「何日前かを、24 で 割って計算するとき、小数点以下の部分を切り捨てる」。 .\"O .IP "\-anewer \fIfile\fR" .\"O File was last accessed more recently than \fIfile\fR was modified. If .\"O \fIfile\fR is a symbolic link and the .\"O .B \-H .\"O option or the .\"O .B \-L .\"O option is in effect, the access time of the file it points to is .\"O always used. .\"O .IP "\-anewer \fIfile\fR" ファイルの最終アクセス日時が、\fIfile\fR の内容更新日時よりも 新しければ、真を返す。検査の対象となるファイルがシンボリックリンクで、 しかも .B \-H や .B \-L オプションによってリンクがたどられるようになっている場合は、 リンク先のファイルのアクセス日時が、常に使用される。 -cnewer や -newer の同様部分についても言えることなのですが、 このくだりは、原文の著者がちょっと混乱しているような気がします。 「 If \fIfile\fR is a symbolic link」の 「file」は \fI..\fR で 囲まれていますから、直前の文の \fIfile\fR と同じ、すなわち -anewer の引数だと考えるのが、自然だと思います。そうだとしたら、 「-anewer の引数がシンボリックリンクで、しかも -H や -L オプションが 有効なときは、リンク先のファイルの内容更新日時 (mtime) が比較に 使用される」というのが、著者の言おうとしたことなのではないでしょうか。 わたしとしては、「the access time of the file it points to is always used」をそのままにしておくために、 「If \fIfile\fR is a symbolic link」の file を無理かもしれませんが「検査の対象になる ファイル」と訳しておきました。 でも、これでは、-L オプションはとにかく、-H オプションを 引き合いに出したことが、ちょっとおかしくなります。なぜなら、 -H オプションはコマンドラインで指定したファイルにしか影響しない わけで、検査対象になるファイルについて -H オプションの有効・ 無効を言うことはあまり意味がありませんから。もちろん、 検査対象のファイルがコマンドラインで指定されていることも ありえますけれど。 そんなわけで、思い切って、 ... \fIfile\fR がシンボリックリンクで、 しかも .B \-H や .B \-L オプションによってリンクがたどられるようになっている場合は、 リンク先のファイルの内容更新日時が、常に使用される。 と書き変えてしまおうかと思っていますが、どんなものでしょう。 現在の訳でも一応は意味が通りますから、このままでよいのかも しれません。もしかすると、それがまさに著者の言いたいことで あって、混乱しているのはわたしの方かもしれませんし。 -- 長南洋一