![将文件按周数压缩到每周存档中](https://linux22.com/image/981931/%E5%B0%86%E6%96%87%E4%BB%B6%E6%8C%89%E5%91%A8%E6%95%B0%E5%8E%8B%E7%BC%A9%E5%88%B0%E6%AF%8F%E5%91%A8%E5%AD%98%E6%A1%A3%E4%B8%AD.png)
我正在尝试将文件夹的每周存档分成单独的 zip 文件。
find . -name '*.txt' -ctime +7 -exec zip "archive-$("date+%Y-%U").zip" {} \;
我不知道该如何命名 zip 文件。如果有其他方法也可以。(比如使用 7z 或其他方法进行更好的压缩)
答案1
对于你的情况来说这应该足够了:
find . -name '*.txt' -ctime +7 | zip archive-$(date +%Y%U).zip -@
例子:
find . -name '*.txt' -ctime +7 | zip archive-$(date +%Y%U).zip -@
输出:
adding: a.txt (stored 0%)
adding: b.txt (stored 0%)
现在确保命名:
ls
输出为:
archive-201525.zip a.txt b.txt c
答案2
第一个日期的格式为 YYYYMMDD,这是我命名备份的方式。第二个示例是周数 (%U),前导零如您所问。哎呀,必须转义这些反引号。
#!/bin/bash # Do 'man strftime' for more date format options. mydate=`date +"%Y%m%d"` basedir=/home/username/backups zipfile=$basedir/backup-$mydate.zip echo File name is $zipfile # Now get week number with %U. mydate=`date +"%U"` echo Mydate with week number is $mydate zipfile=$basedir/backup-$mydate.zip echo Zipfile is $zipfile
答案3
尝试这个脚本:
#!/bin/sh
Case (find) in
name="true"
name="(name.zip)"
find . -name '*.txt' -ctime +7 'name=("name of the file")' -exec zip "archive-$("date+%Y-%U").zip" {} \;
endl
这样也许能很好地发挥作用。