我的目录包含文件,它是不同的版本,我想从中选择最新版本,可以按日期或文件名末尾的修订号排序,例如
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 }'
但是,月份不是数字