使用 smbclient 从桑巴共享中获取最新文件



我的目录包含文件,它是不同的版本,我想从中选择最新版本,可以按日期或文件名末尾的修订号排序,例如

Myfile2001.txt

其中2001是修订号。

如何使用 smb-client 从 samba-share 目录中获取最新文件,我想使用 mask 取出所有名称并将其通过管道输出,然后执行一些搜索算法以找到最大数字(最新版本(,然后使用smbclient get获取文件,但这似乎不是最佳解决方案,而且太乏味了。我想知道是否有其他方法可以做到这一点?

编辑:我想出了python中的另一种方法(只是为了方便起见(,可以在文本文件或STDOUT中捕获smbclient get ls的输出,然后使用python查找最新文件名。现在我无法弄清楚如何将上述命令的输出重定向到文本文件或STDOUT根据逻辑进行处理。

有什么办法吗?由于smbclient不允许 ioredirection,因此我仍然停留在更新方法的同一点上。我已经经历了pysmb但不能依赖它,因为它是一个实验库,但是,任何带有pysmb的解决方案也被接受以暂时解决目的。

我已经在bash 脚本中使用 awk 解决了这个问题。目标:下载最新的csv文件

${SmbCmd} "ls <mask>" 2>/dev/null
| awk '{ if ($1 ~ "csv$") print $1 }' | sort | tail -1)

其中 ${SmbCmd} 具有要发送到 smb 服务器的所有值,作为 smbclient 的路径、身份验证方法、smb 服务器名称、smb dir ....并以长格式的"--命令"结束

当然,我的csv文件名的创建日期为"name_yyyy-mm-dd.csv"。

你可以尝试这样的事情

${SmbCmd} "ls <mask>-*" | awk '{ if ($1 ~ "csv$") print $8$5$6";"$1 }'

但是,月份不是数字

最新更新