![使用用户输入计算旧日期的脚本](https://linux22.com/image/92991/%E4%BD%BF%E7%94%A8%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E8%AE%A1%E7%AE%97%E6%97%A7%E6%97%A5%E6%9C%9F%E7%9A%84%E8%84%9A%E6%9C%AC.png)
我有许多日志文件,必须将它们从生产目录移至存档目录。我需要在创建日期之前移动它们。例如,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 \;