プロが教える店舗&オフィスのセキュリティ対策術

x.datとy.datが存在していた場合
y.datを削除して
x.datをy.datに改名する命令はあるでしょうか?

y.datが存在していないときには
rename 'x.dat' 'y.dat';
があっていいのですがy.datがあるかもしれないときに使えないので困っています

やはりunlinkと共に使うしかないのでしょうか?

A 回答 (3件)

UNIX系OSなら、renameだけでできますが?



もしほかのOSで、renameだけでできないようなら、unlinkを使えばいいだけだと思いますが・・それほど悩む理由があるのでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます
FedoraCore3です
一応Unix系ですからrenameだけで大丈夫だったのですね
unlinkしないといけないと思い込んでいました

お礼日時:2005/03/21 13:39

名前変更で上書きってlinuxだけなんですねー。


使った事がないから、あとで試してみようかなー。
回答が出ているようなので、適当な事を書いちゃい
ます。^^
unlinkがいやなら、適当な名前にかえちゃうのは
どうですか?

 if( -e y.dat ){
$time = time();
rename y.dat , $time.dat;
rename x.dat , y.dat; }
 else{
rename x.dat , y.dat; }

書いては見たものの、けっこう怪しいかも。
それに、同じ秒で同一の処理があったら、不具合に
なるだろうし、ファイルが巨大だったり、頻繁にこの
処理が起きたら、ファイルでいっぱいになってしまふ。

$time.dat がさらにあるかどうか、もしあったら、
数秒sleepさせるとして、、、。

スクリプトはあってないかも。
考え方だけ参考にしてみては~♪
    • good
    • 0
この回答へのお礼

ありがとうございます
不精なので1行でできないかと思ってみたのです

お礼日時:2005/03/21 15:26

No.1です


perlのドキュメントを確認してみました。

「Changes the name of a file; an existing file NEWNAME will be clobbered.」
ファイルの名前を変えます。すでに存在するNEWNAMEファイルは、上書きされます。
・・と、書いてありました。

けれど、その下の方には・・
OSに依存するかも、というようなことがいろいろ書いてあるので・・微妙ですね。安全に、先にunlinkするか・・ターゲットシステム上で動けばとりあえずよしとするか・・Perlのドキュメント通りに動かないOSは無視するか・・。
    • good
    • 0
この回答へのお礼

わざわざ仕様まで調べていただきありがとうございます
参考にします

お礼日時:2005/03/21 15:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!