- ベストアンサー
ls -lで6箇月よりも前の最終修正時刻を表示させる方法
Solaris2.6の「man ls」より引用します。 > -l 各ファイルについて、モード、ACL 表示、リンクの数、所 有 > 者 名、グループ名、サイズ ( バイト単位 ) 、最終修正時刻 > をロング形式で出力します。ファイルが特殊ファイ ル の 場 > 合、 サ イ ズフィールドには、メジャーデバイス番号とマイ > ナーデバイス番号が入ります。最終修正時刻が 6 箇月よりも > 前 である場合には、POSIX ロケールでは「月・日・年」の形 > 式で表示されます。 LC_TIME ロケールカテゴリが POSIX ロ > ケー ル に 設定されていない場合には、異なった形式の時間 > フィールドが使用されます。最終修正時刻が 6 箇月以内であ > る 場合には、「月・日・時」の形式で表示されます。ファイ > ルがシンボリックリンクの場合は、ファイル名を出力した 後 > に、"->" と参照するファイルのパス名が出力されます。 ls -lで6箇月よりも前の最終修正時刻を表示させるにはどのようにしたら良いのでしょうか?ロケールカテゴリを変更すれば良いのかと思いますが、何をどのようにすればよいのでしょうか。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もし、確認だけなら、こういった方法でもあります。 # pwd /usr/sbin # ls -l whodo -r-xr-xr-x 37 root bin 5256 1月 6日 2000年 whodo # tar cvf - whodo | tar tvf - a whodo 6K tar: ブロックサイズ = 14 -r-xr-xr-x 0/2 5256 1月 6日 08:51 2000年 whodo #
その他の回答 (1)
- ysk6406
- ベストアンサー率40% (237/589)
いっそのこと、Perl で作ってしまうというのはどうですか? 引数で与えたファイルのタイムスタンプを表示する Perl スクリプトの例です。 @l = localtime((stat($ARGV[0]))[9]); printf("%04d/%02d/%02d %02d:%02d:%02d $ARGV[0]\n", $l[5] + 1900, $l[4] + 1, $l[3], $l[2], $l[1], $l[0]); これで、 2004/12/15 07:47:14 ファイル名 のように表示されます。 あとは、これに肉付けしていけば、ls -l のようなスクリプトを作ることも簡単にできます。
お礼
はい。言語はそれなりに嗜みますが、扱うサーバがSolaris、HP-UX、AIX、Linuxなど雑多で、それぞれ数台、さらに各サーバにいくつか使用ログインユーザがあるので、できたら、Shell(kshメイン)またはOS標準コマンドで実現出来たらと思っております。
お礼
なるほど。再帰的に確認できるし、これは便利ですね! 「tar cvf - whodo | tar tvf -」よりも「tar cf - whodo | tar tvf -」の方がいいですね。 すばらしい。