• 締切済み

Bシェルでファイルを移動するシェルの記述について

3つのディレクトリを参照し10日以上経過したファイルを各々の指定したディレクトリへ移動する、というスクリプトを作成したいのですが、うまく動作しません。 条件として、いずれかのディレクトリに移動対象ファイルなかった場合、エラーを出さずに終了という形としたいです。 ご指摘いただけないでしょうか。 よろしくお願いします。 #!/bin/sh LANG=C;export LANG KEEP_DAYS=10 #移動元 acclogdir=/export/home/justadmi/test/acclog     consoledir=/export/home/justadmi/test/consolelog   sardir=/export/home/justadmi/test/sarlog       #移動先 target_accelogdir=/export/home/justadmi/test/mv_acdir  target_consoleldir=/export/home/justadmi/test/mv_consdi   target_sardir=/export/home/justadmi/test/mv_sadir    #ファイル移動の条件 LIST="   $acclogdir,access.200,$target_accelogdir     $consoledir,jusmgdp02_console.log.200,$target_consoleldir $sardir,sa200,$target_sardir          " for i in $LIST do DIR=`echo "${i}"|cut -d ',' -f1` FILE=`echo "${i}"|cut -d ',' -f2` TARGETDIR=`echo "${i}"|cut -d ',' -f3` cd $DIR mv find . -name $FILE\* -type f -mtime +$KEEP_DAYS -exec mv {} $TARGETDIR \; done exit 0

みんなの回答

回答No.1

ざっと見た感じ問題ないように思いますが・・・「うまく動作しません。」が分からないとアドバイスしずらいです。 1.エラーで終了する。 2.期待した動作をしない など > cd $DIR > mv find . -name $FILE\* -type f -mtime +$KEEP_DAYS -exec mv {} > > $TARGETDIR \; > done タイプ・ミスかもしれませんが・・・ 「mv find . -name」は「mv」が不要では?

otanako
質問者

お礼

qaz_qwerty_me  さん ご指摘ありがとうございます。 シェル実行結果は、エラーで終了して移動処理が実行されません。 タイプミスですか。 find . -name $FILE\* -type f -mtime +$KEEP_DAYS -exec mv {} $TARGETDIR \; で実行して結果を確認してみます。

専門家に質問してみよう