system management
1748126 メンバー
3723 オンライン
108758 解決策
新規ポスト

タイムスタンプの古いファイルを30個移動

 
cube
アドバイザー

タイムスタンプの古いファイルを30個移動

フォーラム参加者様。お世話になっております。

表題の件、箇条書きながら質問させていただきます。

/logs/tmp/ 以下に自動的に更新ファイルが作成されていきます。

/logs のファイルシステムがあまり大きくないため、ここにできたタイムスタンプの古いファイル30個を/hoge ディレクトリへ、シェルを使って毎時間移動させようと思っております。

シェルはクーロンに登録して動かそうと考えておりますが、/logs/tmp/ 以下に作成されるファイルを自動的に古いものから移動させる方法がわかりません。

ご存知の方、いらっしゃいましたらご教授ほどよろしくお願いします。
3件の返信3
H_K
頻繁なアドバイザー

タイムスタンプの古いファイルを30個移動

目印になるファイルを touch -t で作っておき

find の -newer 目印ファイル を使えば

できそうな気がする。

hazelwood
信頼あるコントリビューター

タイムスタンプの古いファイルを30個移動

/logs/tmp/ディレクトリにサブディレクトリが無ければ、

以下のコマンドで表示されたファイルを移動させれば

いいと思います。

ls -tr /logs/tmp | head -30

ファイルの移動を含めてスクリプトにすると、

cd /logs/tmp

mv `ls -tr | head -30` /hoge

といったところです。

もし、サブディレクトリがあり、それは移動したくないのであれば、ls -trの結果を読み込んで、ファイルかどうかの判断と個数チェック、mvを行なうループを書けばいいでしょう。

cube
アドバイザー

タイムスタンプの古いファイルを30個移動

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

お二人の意見を参考にさせていただきました。

ありがとうございました。