如何让Bash脚本归档的文件以含日期的名称保存?
给归档脚本添加日期后缀的解决方案
你可以通过date命令生成指定格式的日期字符串,再将其拼接到归档文件名中,具体实现如下:
生成目标格式的日期字符串
使用date +"%d_%m_%Y_%H-%M"命令就能生成日_月_年_时-分格式的日期,比如你需要的28_11_2022_14-46。修改原有脚本
在归档分支中先获取日期字符串,再和用户输入的文件名拼接,同时建议显式添加.tar.gz后缀(避免用户忘记输入)。另外,为了兼容路径或文件名包含空格的场景,所有变量最好用双引号包裹。
修改后的完整脚本:
#!/bin/bash echo "1-archive" echo "2-exit" read doing case $doing in 1) echo "choose directory" read path echo "choose name file" read name # 生成指定格式的日期字符串 date_str=$(date +"%d_%m_%Y_%H-%M") # 拼接最终归档文件名 archive_name="${name}_${date_str}.tar.gz" # 执行归档操作,变量用双引号包裹处理空格 tar -cvzf "$archive_name" "$path" ;; 2) exit 0 ;; *) echo "error" ;; esac
- 可选调整
- 若想让日期作为文件名前缀,只需把
archive_name改为"${date_str}_${name}.tar.gz" - 若无需用户输入文件名,直接用日期作为核心命名,可以去掉
read name步骤,设置archive_name="archive_${date_str}.tar.gz"
- 若想让日期作为文件名前缀,只需把
内容的提问来源于stack exchange,提问作者olooliver
相关产品推荐
相关产品推荐

