使用SFTP计算远程目录中的文件数

时间:2016-09-13 00:39:09

标签: linux bash terminal

我正在用bash编写脚本,我需要计算使用SFTP在远程目录中以ddd开头的文件数。在下载每个文件之后,我可以比较远程目录中有多少文件以及下载了多少文件。检查它们是否匹配等。

我做的是这样的事情:

echo ls -l | sftp "user@$123.45.67.8:/home/user/datafolder/ddd*" | wc -l

上面的一个工作,但是当我运行它时,它会将所有文件下载到我的本地文件夹,这是我不想要的。

如何计算文件数量而不下载它们。我想在代码的另一部分下载它们。

2 个答案:

答案 0 :(得分:2)

正如评论中所说,最好的方法是使用ssh。所以这输出了我想要的东西

ssh user@123.45.67.8 ls /home/user/datafolder/ddd* | wc -l

答案 1 :(得分:0)

rsync --list-only提供了一种列出远程目录中文件的简洁方法。只需将结果传递给wc -l即可完成计数(不包括...(点)文件),例如

rsync --list-only server:/path/to/dir/ | wc -l

(请注意跟踪'/'以计算内容而非目录本身。添加-r进行递归计数。您可以选择所有rsync个选项定制计数的文件,例如--exclude="stuff"等。)