我的目录中包含以下格式的文件:
SLS20160112.001 (20160112 stands for YYYYMMDD)
我希望归档所有上个月的文件,例如:
SLS20160201.001
SLS20150201.001
SLS20160107.001
SLS20160130.001
对于列出的上述文件,我将存档SLS20160107.001和SLS20160130.001,因为它会在1月份标记文件名。
对于SLS20160201.001,它仍然保留,因为我只想存档上个月的文件。我只能从文件名中提取日期,而不是mdate或adate。
我当前的逻辑是循环遍历所有文件,然后获取上个月的文件,然后输出文件名并对其进行焦化。但不知道该怎么做。
for file in SLS*; do
f="${file%.*}"
GET PREVIOUS MONTH FILES AND THEN ECHO
done | tar cvzf SlSBackup_<PREVIOUS_MONTH>.TAR.GZ -T-
答案 0 :(得分:0)
看起来您想通过使用shell脚本来解决问题。我在Mac上做了很多工作,所以我使用csh / tcsh(OSX的默认shell),我的答案将在csh / tcsh脚本中。您可以将其翻译为bash(您的shell),也可以只需输入$ tcsh
即可轻松生成新的shell。
您可以编写一个小的shell脚本,可以过滤所需月份的文件列表。
#!/bin/csh -f
set mon_wanted = '01'
foreach file (`ls -1 SLS*.*`)
set mon = `echo $file | awk '{print substr($0, 8, 2)}'`
if ($mon != $mon_wanted) continue
echo -n $file ' '
end
假设文件名为foo.csh。通过
使其可执行$ chmod 755 foo.csh
然后,
$ tar cvzf `foo.csh` > out.tar.gz