lsコマンドでファイルのタイムスタンプを統一し、秒も表示する方法

このQ&Aのポイント
  • lsコマンドを使用してファイルのタイムスタンプを統一し、秒も表示する方法を教えてください。
  • 最終更新日時が6ヶ月以内のファイルは「11月23 22:41」と表示され、6ヶ月以上昔のファイルは「1月 6 2007」と表示されます。常にYYYY/MM/DD HH:MM:SS形式で表示したいです。
  • lsコマンドでファイルのタイムスタンプの書式を統一し、秒も表示する方法を教えてください。
回答を見る
  • ベストアンサー

lsコマンドで表示されるタイムスタンプの書式を統一し、秒も表示する方法

お世話になります。 lsコマンドの使用方法で質問があります。 例えば本日(2008年11月24日) ls -al コマンドでファイルのタイムスタンプを確認すると 最終更新日時が「2008年11月23日22時41分08秒」のように6ヶ月以内のファイルは 11月23 22:41 と表示されますが、 最終更新日時が「2007年01月06日18時05分04秒」のように6ヶ月以上昔のファイルは 1月 6 2007 と表示されます。 最終更新日時がいつであっても常に 2007/01/06 18:05:04 のように固定の YYYY/MM/DD HH:MM:SS 形式(秒も出力し、ゼロサプレスも行わない形式)で表示したいのですが その方法がわからずに困っています。 (ログファイルとかで秒が表示されるとうれしいです。) 御存知の方、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

CentOS 5.2 の /bin/ls (ls (GNU coreutils) 5.97)だと、 時刻の表示形式を指定する --time-style オプションがあります。 例えばこんな感じです。 ls -l --time-style=+%c -rw------- 1 root root 1095 2008年04月11日 17時16分05秒 anaconda-ks.cfg -rw-r--r-- 1 root root 7 2008年06月29日 13時19分57秒 bar ... ls -l --time-style=full-iso -rw------- 1 root root 1095 2008-04-11 17:16:05.000000000 +0900 anaconda-ks.cfg -rw-r--r-- 1 root root 7 2008-06-29 13:19:57.000000000 +0900 bar ...

参考URL:
http://www.geocities.jp/fut_nis/html/coreutils-ja/Formatting-file-timestamps.html
googoo4989
質問者

お礼

御回答ありがとうございました。 教えて頂いた内容をもとにいくつか試したところ、 ls -al --time-style=+'%Y/%m/%d %H:%M:%S' とすれば日本語環境(LANG環境変数がja_JP.UTF-8)であっても YYYY/MM/DD HH:MM:SS の固定形式で表示されました。 ありがとうございました。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

ls -alT くらいで我慢するか、自分で作る。

googoo4989
質問者

お礼

御回答ありがとうございました。

関連するQ&A

  • HP-UXのlsコマンドで日時書式を統一する方法

    一般的にUNIX系OSで ls -l コマンド実行した場合6ヶ月以上前に修正したファイルは、 時刻までは出力されません。 下記のような表示になってしまします。 # ls -l foo -rwxr-x--- 1 root root 3223 Nov 10 2004 foo このようなとき Linux だと 下記のようにlsコマドを実行するとファイルの修正日時に関わらず "YYYY/MM/DD HH:MI:SS"形式で表示してくれます。 ls -al --time-style=+'%Y/%m/%d %H:%M:%S' Solarisの場合でも ls -E コマンドを使えば、同じようなことができそうです。 しかし、HP-UXのlsコマンドの場合は、--time-style や -E オプションが使えません。 何か良い方法はないでしょうか? ls でなくとも ファイルのタイムスタンプが "YYYY/MM/DD HH:MI:SS"形式で取得できまれば、方法は問いません。

  • lsコマンドのタイムスタンプ

    ls -lでファイルを表示させた時のタイムスタンプは、 表記形式は何に依存しているのでしょうか。 とくに月表示で8月、Augなど違いがあり変更、できるとすれば、どのようにしたらよいかご教授願います。

  • lsコマンドで表示するファイルの更新日付について

    お世話になります。 現在RedHatLinux AS2.1を使用しております。 ディレクトリの情報(ファイル名、ファイルサイズ、更新日付)を毎日取得して日々差異がないか確認しているのですが、 更新日付が昨日は 11月 10 2007 と表示していたのに、今日になって、 11月 10 10:30 と年のところが時刻になっていました。 11月10日なので、勿論今日(5/21)更新した訳でもなく、ファイルサイズも同じなので年の表示が時刻に変わっただけだと思います。 コマンドは、 ls -lh|cut -b 35- と35バイト目からだけを表示するようにしています。 lsコマンドで表示する更新日付は昨年までのファイルについては、年を表示して、同じ年度(2008年)のものは時刻が表示するものだと思っておりましたが、違ってるのでしょうか?コマンドがマズイですかね・・・。 結構基本的な事だと思うのですが、ネットで探してもなかなか見つからずここで質問させていただきます。 どうかよろしくお願いします。

  • AIX6でファイルのタイムスタンプの秒を表示するコ

    linuxでは以下のコマンドで確認できました。 ls --full-time または ls -l --time-style=”+%Y/%m/%d %H:%M:%S” AIX6で同様のコマンドを実行してもエラーになります。 ls以外でもかまわないので、 ファイルのタイムスタンプを秒まで表示する方法がありましたら、 教えてください。

  • タイムスタンプを時間に変換

    getTime()メソッドが返した値の、右の3つの数字を消すとタイムスタンプが得られました。1970年からの経過秒らしいです。 このタイムスタンプから yyyy/mm/dd hh:mm:ss のような年月日の表示にしたいのですが、簡単にできる方法はありませんか? i=1189382252 str="" //タイムスタンプを時間に変換 alert(str)

  • lsコマンドについて。

    lsコマンドについて。 $lsを実行したときに、結果は各ファイル名が改行で区切られて出力されると思うのですが、コンソールにはスペースかタブで区切られているように表示されます。 これはシェルがlsコマンドの結果に含まれる改行をスペースなどに変えてコンソールに出力しているからなのでしょうか。 よろしくお願いします

  • "ls -l"でのタイムスタンプ表示について

    UNIXコマンド"ls -l"を実行した際に表示されるタイムスタンプに ついての質問です。 上記のコマンドを実行すると、通常下記の(1)のような結果が得られますが (1)-rw-rw-rw- 2 mine project 512 May 7 15:12 aaa.txt 下記のような少し古いファイルになると、タイムスタンプの 時間の表示のところが"year"を表示してしまいます。 2000年のファイルに関してはしょうがないかもしれないのですが 今年2001年のファイルまで、時間の表示が出なくなってしまってます。 (2)-rw-rw-rw- 1 mine project 1242 Oct 13 2000 bbb.txt (3)-rw-rw-rw- 1 mine project 3342 Jan 9 2001 ccc.txt この"year"表示を"時間"表示に直す設定を知ってる方いましたらご教授願います。 ちなみに、昨年以前のファイルに関しては、やはりしょうがないということでしょうか? OSは Solalis2.6で、私はかなりの初心者です。 尚、UNIX関連の質問って他にいいカテゴリありますか? ここで問題ないでしょうか?

  • 秒を年月日(時間秒)と表示させたい

    例えば。。 1234567890秒を 1900年1月1日0:00から数えてどれだけの時間が経過しているか? yyyy/m/d h:mmという風に西暦で表示させたいのですが、 関数でできるのでしょうか? 教えてください!

  • PHP タイムスタンプ

    タイムスタンプで値を取得して、比較するプログラムなのですが、なぜか $time = mktime(0, 0, $_POST['hh'], $_POST['dd'], $_POST['mm'], $_POST['yyyy']); の値が”-1”で返ってきてしまいます。 何故でしょうか? <?php echo "<select name=\"yyyy\">"; for ($i = 2010; $i < 2012; $i++) { $selected=$i==$_REQUEST["yyyy"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 年 "; echo "<select name=\"mm\">"; for ($i = 1; $i < 13; $i++) { $selected=$i==$_REQUEST["mm"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 月 "; echo "<select name=\"dd\">"; for ($i = 1; $i < 32; $i++) { $selected=$i==$_REQUEST["dd"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 日 "; echo "<select name=\"hh\">"; for ($i = 0; $i < 24; $i++) { $selected=$i==$_REQUEST["hh"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 時 <br />"; $time = mktime(0, 0, $_POST['hh'], $_POST['dd'], $_POST['mm'], $_POST['yyyy']);

    • ベストアンサー
    • PHP
  • Cygwinのlsコマンドについて

    Cygwinの場合、以下のオプションでlsコマンドを実行すると $ ls --full-time -rwxr-xr-x 1 aaaa なし 139 2006-08-23 15:01:34.203125000 +0900 ls.sh と表示されます。 Linux(redhat)上で同様のコマンドを実行すると、 $ ls --full-time -rwxr-x--- 6 root root 4096 Wed Aug 09 16:59:03 2005 ls.sh と表示されます。 タイムスタンプの表示形式が異なっていますが、 Cygwin上で、Linuxのような表記をしたいのですが、 可能でしょうか。ご教授お願い致します。