我的目录包含文件和它的不同版本,我想从中选择最新版本,可以按日期排序,也可以按文件名末尾的修订号排序,如
Myfile2001.txt
2001
是修订号。
如何使用smb-client从samba-share目录中获取最新文件,我想使用掩码取出所有名称并将其输出到输出,然后执行一些搜索算法以查找最大数量(最新)然后使用smbclient get
来获取文件,但这似乎不是最佳解决方案,而且太繁琐了。我想知道是否有其他方法可以做到这一点?
编辑:我在python中找到了另一种方法(只是为了方便)在文本文件或smbclient get ls
中捕获STDOUT
的输出,然后使用python查找最新文件的名称。现在我无法弄清楚如何将上述命令的输出重定向到文本文件或STDOUT
根据逻辑处理它。
有什么办法吗?由于smbclient
不允许ioredirection,我仍然坚持使用更新的方法。我已经完成了pysmb
但不能依赖它,因为它是一个实验性的库,但是,任何带有pysmb
的解决方案也被接受来暂时解决目的。
答案 0 :(得分:0)
我已经在bash脚本中使用awk解决了此问题。目标:下载最新的csv文件
${SmbCmd} "ls <mask>" 2>/dev/null\
| awk '{ if ($1 ~ "csv$") print $1 }' | sort | tail -1)
其中$ {SmbCmd}具有要发送到smbclient的所有值,作为smbclient的路径,身份验证方法,smb服务器名称,smb dir ....并以“ --command”结尾长格式
当然,我的csv文件名称的创建日期为“ name_yyyy-mm-dd.csv”。
您可以尝试类似的方法
${SmbCmd} "ls <mask>-*" | awk '{ if ($1 ~ "csv$") print $8$5$6";"$1 }'
但是,月份不是数字