我有一个 sftp 服务器 ([email protected])。我正在尝试连接到它并在 (/files/base/incomming) 路径中搜索包含.txt的文件,并获取每个包含 (.txt) 的文件中的行数。我试图使用以下命令来实现,但它作为无效命令抛出:
echo "wc -l *.txt*"|sftp -q [email protected]:/files/base/incomming
o/p
sftp>
invalid command
有什么办法可以解决这个问题吗?
sftp
不会派生外壳,因此您不能在那里使用常用命令。假设你也可以通过ssh
你可以使用登录或者
完成问题中描述的任务。
如果(无论出于何种原因)你想使用
sftp
你需要使用其中一个可用的命令ftp
(并希望ftpd
另一边知道如何处理通配符):如果文件的数量不是太大,您可以使用 globbing 将位置参数设置为每个匹配的文件名,然后回显计数:
或者,如果文件数量很大(但小于
uintmax_t
),并且您有 GNU find(用于-printf
扩展),那么您可以使用我从 Stéphane 看到的技巧:上面对给定目录运行
find
命令,将深度限制为仅该目录,并将匹配项限制为纯文件 (-type f
) 以及名称以.txt
;结尾的文件。对于每场比赛,都会打印一个句点,其总数由wc -c
命令替换计算并返回到分配给count
.