プロが教えるわが家の防犯対策術!

linuxでシェルスクリプトを書いています
サーバ上に「日付のついた*.bak」ファイルが毎日できています
これを3日以上経過した*.bakファイルを消去したいので直接
コマンドラインから次のようにキーボードでたたくと正常に消去できます

find /root -name '*.bak' -mtime '+3' -exec rm -f {} \;

これをシェルスクリプト(sakujyo.bash)として次のように記載し
/rootの中におきました

================(sakujyo.bash)=====================
#!/bin/bash
find /root -name '*.bak' -mtime '+3' -exec rm -f {} \;
===================================================

そして
# sakujyo.bash と打鍵すると
次のようにエラーとなります

-bash: sakujyo.bash: command not found

findのpathが通ってないのかとも考えられるのですが・・・
findコマンドは
/usr/bin/ の中にあるので次のように記載してみました

===================================================
#!/bin/bash
cd /usr/bin
find /root -name '*.bak' -mtime '+3' -exec rm -f {} \;
====================================================
このようにしても同じエラーとなります

記載方法等教えていただけませんか
よろしくお願いします。

A 回答 (1件)

># sakujyo.bash と打鍵すると


>次のようにエラーとなります
>-bash: sakujyo.bash: command not found

findが見つからないのではなく、sakujyo.bashが見つからない。と言っています。
pathにカレントディレクトリを含めていないから。でしょう。
# ちなみに、pathにカレントディレクトリを含めるのはよろしくありません。

./sakujyo.bash
と入力したらどうですか?

pathに~/binが含まれているのならば、
/root/bin/sakujyo.bash
に置く。
という方法もとれます。

あとは……
パーミッションは適切ですか?(実行属性付いていますか?)

findのパスについては……実行時のpath環境変数次第でしょうか。
# フルパス記述しておく方がいいかも知れませんな。
    • good
    • 0
この回答へのお礼

早速、回答をいただきありがとうございました。

>./sakujyo.bash
>と入力したらどうですか?

上記のオペレーションでうまくいきました

ありがとうございました。
またよろしくお願いします。

お礼日時:2013/02/26 19:27

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