linux - 在linux系统上根据压缩文件的年份和月份创建带有文件名的压缩存档
问题描述
我想压缩和归档(例如 zip 或 tar.gz)很多文件,这些文件都存储在 /folder 中。它应该创建像 yyyy-mm-backup.zip 这样的存档文件,包括在该时间范围内修改的所有原始文件。
示例文件:
fileA.txt (modified date 2020-12-01)
fileB.txt (modified date 2020-12-02)
fileC.txt (modified date 2021-01-01)
应该创建存档文件:
2020-12-backup.zip (include fileA.txt and fileB.txt)
2021-01-backup.zip (include fileC.txt)
这可以通过单个 zip 或 tar 命令实现吗?还是我需要一个脚本或使用 logrotate?
解决方案
将 find 命令的输出重定向到 while 循环
while read line;
do
dattim=${line%%/*};
filpath=${line#*/};
echo "zip -r $dattim-backup.zip $filpath";
# zip -r "$dattim-backup.zip" "$filpath"
done <<< "$(find /path/to/directory -name "*.txt" -printf "%TY-%Tm/%h/%f\n")"
查找所有扩展名为 txt 的文件,并以“/”、前导目录、“/”和文件名列出的格式打印修改日期。通过 while 循环处理输出。将日期/时间戳提取到变量 dattim 中,将文件路径提取到变量 filpath 中。使用这些变量生成命令以将文件添加到过时的 zip 文件中。
验证 echo 是否按预期显示命令,然后删除注释标志以执行实际的 zip 命令。
推荐阅读
- php - 下单后缺货时自动为产品添加特定类别和标签
- spring - 在 Spring Batch 中的步骤之间传递值时出现空指针异常
- linux - Ubuntu 20.4 中的 Ncurses 是否与 18.04 中的版本不兼容
- r - 如何在 Docker 映像中安装 R 库“ggpubr”?
- go - 如何使用 golang 查询将数据流式传输到 Cassandra
- angular - 来自客户端的表单数据未到达服务器
- python - 在 python 中编写引导程序的最佳方法
- html - 颜色高亮 Laravel Blade 在 VS 代码中不起作用
- java - 智能投射到“ObserverT!!” 是不可能的,因为 'item.get()' 是一个复杂的表达式
- python - ValueError:无法将字符串转换为浮点数:'02.08.2019'