【问题标题】:Shell script to archive & delete files older than 5 days based on created date of the files基于文件创建日期归档和删除超过 5 天的文件的 Shell 脚本
【发布时间】:2018-04-27 06:53:28
【问题描述】:

我正在尝试一次压缩 5 天的日志并将压缩文件移动到另一个位置并从原始位置删除日志文件。我需要 bash 脚本来完成这个。我使用以下命令压缩了文件,但无法将它们移动到存档文件夹。我还需要根据创建日期进行压缩。现在它正在压缩所有以特定名称开头的文件。

#!/bin/bash
cd "C:\Users\ann\logs"
for filename in acap*.log*; do
# this syntax emits the value in lowercase: ${var,,*}  (bash version 4)
mkdir -p archive
 gzip  "$filename_.zip" "$filename"
mv "$filename" archive

done

【问题讨论】:

  • 看来是时候聘请开发人员了。
  • 我做了以下操作,但它只是将文件从一个位置移动到另一个位置。
  • #!/bin/bash cd "C:\Users\ann\logs" 获取 acap*.log* 中的文件名; do # 此语法以小写形式发出值:${var,,*} (bash 版本 4) mkdir -p archive mv "$filename" archive done
  • 您可以点击edit将代码添加到问题本身,使用正确的格式更易于阅读。

标签: bash shell


【解决方案1】:
#!/bin/bash
mkdir -p archive
for file in $(find . -mtime +3 -type f -printf "%f ")
do
    if [[ "$file" =~ ^acap.*\.log$ ]]
    then
        tar -czf archive/${file}.tar.gz $file
        rm $file
    fi
done

这会查找当前目录中与正则表达式匹配的所有文件,并将它们压缩到每个文件的 tar 中。然后它会删除所有文件。

【讨论】:

  • 我想压缩符合条件的单个文件并将它们移动到另一个文件夹,即 /archive 左右。这会创建一个包含所有这些文件的 tar。
  • @Ann 你想要每个文件一个 zip 文件吗?
  • 是的..所有这些单独的存档文件都应该从原始文件夹移动到存档文件夹
  • @Ann 更新了答案。
  • 谢谢它的工作。我可以将其增强为逻辑以压缩和删除超过 3 天的文件
猜你喜欢
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
相关资源
最近更新 更多