以当前日期作为文件夹名称创建存档,如果文件夹存在则添加 1、2 等

以当前日期作为文件夹名称创建存档,如果文件夹存在则添加 1、2 等

我希望配置此备份脚本以采用当前日期并以 mmddyyyy 格式创建目录,因为这将自动完成。但是,如果包含当前日期的目录已经存在(如果我需要在给定日期进行多次备份),我想添加 -1 或 -2,以便它显示为 07072011-3(如果这是当天进行的第 4 次备份)。

有没有一种简单的方法可以在目录名末尾添加 +1 ,每次写入时都添加?

设置日期/文件夹名称

today="$ (date +%m%d%Y)"

mkdir /home/user/backup/$today

检查目录是否存在

if [ ! -d /home/user/backup/$today ]

then

echo Directory already exists ;

答案1

您必须使用 DDMMYYYY 吗?使用 YYYYMMDD 更简单,因为默认排序顺序ls会正确地将最新的排序到顶部。

您还可以扩展日期概念以使用时间,例如

today=$( date +%Y%m%d%H) 

得到 YYYYMMDDHH 并且如果需要的话你甚至可以添加 %M 和 %S。

答案2

如果您确实想坚持使用所选择的格式,可以执行以下操作:

today=$(date +%Y%m%d)
folder=$today
i=0
while [ -e /home/user/$folder ]
do
  echo "${folder} exists";
  i=$(( $i + 1 ))
  folder="${today}-${i}"
done
echo $folder;

相关内容