ユーザー入力を使用して前の日付を計算するスクリプト

ユーザー入力を使用して前の日付を計算するスクリプト

ログファイルが多いため、本番ディレクトリからアーカイブディレクトリに移動する必要があります。作成日より前に移動する必要があります。たとえば、2016年1月のファイルは、2016-01というラベルの付いたアーカイブディレクトリに移動されます。現在、次のように入力して手動でこれを実行します。

$ find /creation/directory/filename -daystart -mtime vXX -exec mv "{}" /destination/directory \;

vXXファイルの選択が開始されてからの日数はどこにあります(つまり、10日前に変更されたファイルの場合は+10)。日数は、月末がいつであるか、特定のディレクトリがいっぱいになる場合に応じて変更されることがあります。

私はユーザーに入力(日数)を要求するbashスクリプトを作成し、それを検索して移動するスクリプトに統合しようとしています。 dateコマンドを使用し、ユーザー入力を変数として使用する方法に問題があります。

これはコマンドラインから必要なものを取得するのに効果的であることを知っていますが、$ date -d 'now - vXX days'それをスクリプトに入れる方法がわかりません。

私はいくつかのバリエーションを試しました。

days=0
echo -n "Enter number of days back to begin count > "
read days
echo "Calculated date is "
date -d 'now - ($days) days'

私はBashで何も書いた経験がほとんどなく、他のスクリプトでは大丈夫です(もちろん、誰もが助けてくれて!)。しかし、変数内の変数とユーザー入力を利用することは本当に私を殺します。どんな助けでも大変感謝します!

(私はRHEL 5を使用しています。)

答え1

このスクリプトは正しい方向にあなたを導きます。

#!/bin/bash

read -p "Enter number of days back to begin count > " days

echo "Calculated date is "
date -d 'now - '"$days"' days'

find /creation/directory/filename -daystart -mtime +"$days" -exec mv "{}" /destination/directory \;

関連情報