我正在编写一个shell脚本,它将tar日志和zip超过180天的文件压缩并删除它们。
这是我的代码:
#!/bin/bash
files=()
while IFS= read -r -d $'\0'; do
files+=("$REPLY")
done < <(find /mnt/main/var/www/m2allcrm/ -maxdepth 1 -mtime +180 -type f \( -name "*.log" -o -name "*.csv" \) -print0)
name=$(date '+%Y-%m-%d')
tar cvfz "backup_$name.tar.gz "${files[@]}"
当我运行它时,出现错误:
syntax error near unexpected token `<'
有人可以帮助我调试此错误并删除文件吗?
谢谢!
答案 0 :(得分:1)
tar的选项--files-from
处理文件名中的空格,文件名-
表示stdin
。
因此有一个简单的版本:
name=$(date +%Y-%m-%d)
find /mnt/main/var/www/m2allcrm/ -maxdepth 1 -mtime +180 -type f \( -name "*.log" -o -name "*.csv" \) | tar cvzf backup_$name.tar.gz --files-from -