如何根据部分文件名从远程内容中获取文件?

如何根据部分文件名从远程内容中获取文件?

我在远程服务器中有一些子文件夹(A、B、C、D……),其中包含大约 100 个 .gz 文件。文件命名模式类似于 ND2_58_20151105173030_20151105173240_1234.log.gz,其中 _ 后面的第 3 和第 4 个字段是开始和结束时间。现在,如果开始时间/结束时间距当前时间有 15 分钟,我想获取该文件。有人可以建议我如何使用 shell 脚本来执行此操作吗?为了获取数据,我使用 rsync。

谢谢,Arn

答案1

您可以使用--include--exclude选项来rsync仅选择所需的文件。如果我理解正确的话,您需要名称包含当前日期/时间加减 15 分钟的文件。不确定您是否需要确切地15 分钟,但是这里有一个小脚本可以做到这一点:

#!/bin/sh

format='%Y%m%d%H%M'

for delta in $(seq -15 15); do
    p='--include=*_'$(date +$format --date "+ $delta minutes")'*_*.gz'
    include="$include $p"
done

rsync -av $include --exclude=* SRC/ DEST/

应该很容易修改确切地15分钟。

答案2

如果你可以相信文件系统您可以同时使用findrsync

find /path -file -mmin +15 -exec rsync {} destination \;

或者采用相反的逻辑,并且只有一个rsync流程

rsync --files-from=<(find /path -mmin +3 -type f -exec basename {} \;) /src_path/ /dst_path

参考

你可以看看这个[答案][123], 例如...

相关内容