人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Solaris9標準付属のコマンドで、ファイルの変更日時を秒まで取得して「ファイル名_YYYYMMDDHHMISS」にリネームするシェルスクリプトを教えてください。
例えば、ファイル名が「logfile.txt」でファイルの変更日時が「2007年3月1日16時43分53秒」の場合は「logfile.txt_20070301164353」にリネームします。
※Solaris10ではないので、lsコマンドでは秒まで取得できません。

●質問者: beti
●カテゴリ:コンピュータ
✍キーワード:2007年 3分 3月1日 LS solaris10
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● cubick
●70ポイント ベストアンサー

シェルではなくPerlになってしまうのですが、、

#!/usr/bin/perl

$old = "$ARGV[0]";

@stat = stat $old;

($sec,$min,$hour,$mday,$mon,$year) = localtime($stat[9]);
$mon++;$year+=1900;

#printf "%04d/%02d/%02d %02d:%02d:%02d\n",$year,$mon,$mday,$hour,$min,$sec;
$new = "$old" . sprintf "_%04d%02d%02d%02d%02d%02d",$year,$mon,$mday,$hour,$min,$sec;

#print "$new\n";

rename $old,$new or die "$!";

上記スクリプトを適当な名前で保存し、引数にファイル名を指定して実行してみて下さい。

$ rename.pl log.txt

注:カレントディレクトリのファイル名のみ対象です。

◎質問者からの返答

回答ありがとうございます。

うまくいきました。


上記を、

rename.sh

という名前で

/export/home/hogehoge/bin

に保存し、

/export/home/hogehoge/bin/rename.sh /tmp/testfile.log

を実行したところ、カレントディレクトリ以外でもうまくいきました。

※使い方がおかしかったらご指摘いただければ幸いです。


2 ● hamster001
●0ポイント

Solarisでうまく行くか心許ないですが。実行属性をつけてください。


#!/bin/sh

mv $1 logfile_`date +%Y%m%d%H%M%S`

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ