我正在用bash编写脚本,我需要计算使用SFTP在远程目录中以ddd开头的文件数。在下载每个文件之后,我可以比较远程目录中有多少文件以及下载了多少文件。检查它们是否匹配等。
我做的是这样的事情:
echo ls -l | sftp "user@$123.45.67.8:/home/user/datafolder/ddd*" | wc -l
上面的一个工作,但是当我运行它时,它会将所有文件下载到我的本地文件夹,这是我不想要的。
如何计算文件数量而不下载它们。我想在代码的另一部分下载它们。
答案 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"
等。)