68user's page 掲示板

Prev< No. 3205〜3210> Next  [最新発言に戻る] [過去ログ一覧]
No. 3205 # teru [E-mail] 2003/04/23 (水) 14:55:39
別々のディレクトリのファイルどうしの日付を見てファイル更新が新しければ、コピーするというスクリプトを作りたいんですけど、そのようなコマンドはありますか?

No. 3206 # awa 2003/04/23 (水) 17:21:02
もしご存知でしたら教えてください。
例)
temp/aaa/bbb/ccc
cccディレクトリの中に 
111
222
333
と3つのファイルがあるとします。
  
その時に
cccディレクトリに行き
「ls」コマンドを打つと
111
222
333
と表示されると思いますが
この表示を以下のようにフルパスにしたい。
temp/aaa/bbb/ccc/111
temp/aaa/bbb/ccc/222
temp/aaa/bbb/ccc/333
というのが質問です。
  
もしご存知でしたらご教授をお願いします。
  
以上
よろしくお願いします。
  

No. 3207 # has 2003/04/23 (水) 23:52:57
>>3205 teru
rsyncというコマンドがあるそうです。
http://www.turbolinux.co.jp/knowledge/public/178.html

>>3206 awa
ls | perl -nle "print \"$PWD/\$_\";"
一応動きます。
#1文字目が'/'なのをフルパスというのでは?

No. 3208 # Phantom 2003/04/24 (木) 02:23:40
分かる人にとっては、下らない質問かもしれませんがお分かりでしたら
お願いします。あと、私はperlは全然分かりません。。。

perlで実行した内容結果がindex.htmlというHTMLファイルで出力されるの
ですが、それをcronで決まった時間で実行しています。そして、その出力さ
れたファイルをftpでアップしたいと考えています。しかし、以下のように
cronを書くと駄目でした。

20,50 0-23/2 * * * perl hoge.pl | ftp -n < ftp.up

どう駄目かというと、説明する必要ないかもしれないのですが、ftp上に置
かれるindex.htmlファイルが最新のものではなく、その前の時間のファイル
になってしまうのです。(0時50分に更新すると、ファイルの時間は0時20分
のものになってしまうということです。)原因は明確的で、perlが実行され
出力される前のファイルをftpでアップしている事、にあるのは分かってい
ます。ただ、その解決方法がわかりません。
perlのファイルを書き換えないと駄目なんでしょうか…。それとも、別の
方法があるのでしょうか?

No. 3209 # 68user 2003/04/24 (木) 09:10:30
>>3204 NPK
> そういうリスクがあるので自分で治せない場合はやばいっすよ〜
ごもっともです。精進します。

>>3205 teru
もしシェルスクリプトでやるのであれば test(1) を使って
    if [ "$fromdir/file1" -nt "$todir/file1" ]; then
          cp -f $fromdir/file1 $todir/file1
    fi
など。

>>3208 Phantom
> perl hoge.pl | ftp -n < ftp.up
perl と ftp を同時に実行しているので、perl が書き換える
前に ftp で put しているのでしょう。

そもそも
      % command1 | command2 < file
というのはおかしいです。command2 の標準入力に渡したいのは、
command1 の出力なのか、あるいは file なのかが不明確だから
です。sh 系だとなぜかエラーにならないようですが、csh 系だと
      Ambiguous input redirect.
と怒られます。

というわけで、
      perl hoge.pl ; ftp -n < ftp.up
でしょう。

もし hoge.pl が
      - 正常終了時には 0 を返す (exit(0))
      - 異常終了時には 1 以上を返す
という UNIX コマンドの一般的なルールに従っていて、hoge.pl が
異常終了した場合には ftp を実行したくないのであれば、
      perl hoge.pl && ftp -n < ftp.up
の方をお勧めします。

No. 3210 # Phantom 2003/04/24 (木) 18:09:57
>>3209 68user
> perl hoge.pl && ftp -n < ftp.up
これで、思い通りに出来ました!有難う御座いました。
凄く単純なことにミスをしていたんですね。お恥ずかしい。
sh 系でもエラーはいて欲しいと思いました。

Prev< No. 3205〜3210> Next  [最新発言に戻る] [過去ログ一覧]