gpt4 book ai didi

linux - 压缩一个月前的文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:38 24 4
gpt4 key购买 nike

我编写了一个脚本,用于在文件数量超过限制时将一组文件压缩到一个 zip 文件中。

    limit=1000                        #limit the number of files

files=( /mnt/md0/capture/dcn/*.pcap) #file format to be zipped

if((${#files[0]}>limit )); then #if number of files above limit
zip -j /mnt/md0/capture/dcn/capture_zip-$(date "+%b_%d_%Y_%H_%M_%S").zip /mnt/md0/capture/dcn/*.pcap

fi

我需要修改它,以便脚本检查上个月的文件数量而不是整个文件集。我如何实现它

最佳答案

也许是这个脚本。

#!/bin/bash

[ -n "$BASH_VERSION" ] || {
echo "You need Bash to run this script."
exit 1
}

shopt -s extglob || {
echo "Unable to enable extglob option."
exit 1
}

LIMIT=1000
FILES=(/mnt/md0/capture/dcn/*.pcap)
ONE_MONTH_BEFORE=0
ONE_MONTH_OLD_FILES=()

read ONE_MONTH_BEFORE < <(date -d 'TODAY - 1 month' '+%s') && [[ $ONE_MONTH_BEFORE == +([[:digit:]]) && ONE_MONTH_BEFORE -gt 0 ]] || {
echo "Unable to get timestamp one month before current day."
exit 1
}

for F in "${FILES[@]}"; do
read TIMESTAMP < <(date -r "$F" '+%s') && [[ $TIMESTAMP == +([[:digit:]]) && TIMESTAMP -le ONE_MONTH_BEFORE ]] && ONE_MONTH_OLD_FILES+=("$F")
done

if [[ ${#ONE_MONTH_OLD_FILES[@]} -gt LIMIT ]]; then
# echo "Zipping ${FILES[*]}." ## Just an example message you can create.
zip -j "/mnt/md0/capture/dcn/capture_zip-$(date '+%b_%d_%Y_%H_%M_%S').zip" "${ONE_MONTH_OLD_FILES[@]}"
fi

确保以 unix 文件格式保存并运行 bash script.sh

您还可以修改脚本以通过参数而不是通过以下方式获取文件:

FILES=("$@")

关于linux - 压缩一个月前的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18207677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com