linux解压文件 符合条件的,满足特定名称条件的tar和zip文件的最佳方法?

我正在Linux计算机上编写一个Shell脚本,以通过crontab运行该脚本,该脚本旨在将当前日期之前的所有文件移动到新文件夹,然后对整个文件夹进行tar和zip压缩。似乎是一个简单的任务,但是由于某种原因,我遇到了各种各样的障碍。我是新手并且是自学成才的,因此任何帮助或重定向都将不胜感激。

归档文件的特定标准:所有日志文件都在/home/tech/logs/,所有pdf文件都在/home/tech/logs/pdf

如文件名所示,所有文件都已存在一天以上(文件名不包含$CURRENT_DATE)

所有文件都必须为*.log或*.pdf(即,$CURRENT_DATE如果不是日志文件或pdf文件,则不要存档不包含的文件。

文件名格式说明:

所有日志文件名均home/tech/logs采用格式NAME 00_20180510.log,所有pdf文件均位于“ pdf”子目录(home/tech/logs/pdf)中,其格式为NAME 00_20180510_00000000.pdf(创建文件时将使用“ 20180510”,而0则可以是任何数字)。我需要使用名称而不是文件元数据来创建日期,并且其名称不包括当前日期的所有文件(pdf /日志)均为“旧”。我也不能只移动$CURRENT_DATE名称中不包含的所有文件,因为它将带有任何非文件*.pdf或*.log文件。

现在,脚本会为旧文件(mkdir -p /home/tech/logs/$ARCHIVE_NAME/pdf)创建一个带有新pdf子目录的新文件夹。然后,我想将旧日志移入$ARCHIVE_NAME,并将所有旧pdf从原始pdf子目录移至$ARCHIVE_NAME/pdf。

当前代码:

find /home/tech/logs -maxdepth 1 -name ( "*[^$CURRENT_DATE].log" "*.log" ) -exec mv -t "$ARCHIVE_NAME" '{}' ';'

find /home/tech/logs/pdf -maxdepth 1 -name ( "*[^$CURRENT_DATE]*.pdf" "*.pdf" ) -exec mv -t "$ARCHIVE_NAME/pdf" '{}' ';'

这一直没有奏效,因为它将数字中的数字$CURRENT_DATE视为要排除的数字列表,而不是文字字符串。

我考虑过只使用tar这样的排除选项:

tar -cvzPf "$ARCHIVE_NAME.tgz" --directory /home/tech/logs --exclude="$CURRENT_DATE" --no-unquote --recursion --remove-files --files-from="/home/tech/logs/"

但是a)它不起作用,b)理论上它将包括所有不是的文件*.pdf或*.log文件,这将是一个问题。

我使这个复杂化了吗?有更好的方法来解决这个问题吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值