使用用户输入计算旧日期的脚本

使用用户输入计算旧日期的脚本

我有许多日志文件,必须将它们从生产目录移至存档目录。我需要在创建日期之前移动它们。例如,2016 年 1 月的文件会进入标记为 2016-01 的存档目录。我目前通过键入以下内容手动执行此操作:

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

其中vXX是开始选择文件的天数(即,对于 10 天前修改的文件,+10)。天数会根据月末发生时间或某些目录碰巧填满等情况而变化。

我正在尝试编写一个 bash 脚本,该脚本将要求用户输入(天前的数字),然后将其合并到将执行搜索和移动的脚本中。我在如何使用日期命令并将用户输入作为变量时遇到问题。

我知道这$ 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 \;

相关内容