我有一个sftp服务器([email protected])。我正在尝试连接到它并在(/ files / base / incomming)路径中搜索包含.txt的文件,并获取每个包含(.txt)的文件中的行数。我试图使用以下命令来实现,但是它被当作无效命令抛出:
echo "wc -l *.txt*"|sftp -q [email protected]:/files/base/incomming
o/p
sftp>
invalid command
有什么办法可以解决这个问题?
如果文件的数量不是太大,则可以使用globbing为每个匹配的文件名设置位置参数,然后回显计数:
count=$(ssh [email protected]
'set -- /files/base/incomming/*.txt; echo "$#"')
或者,如果文件数量很大(但少于uintmax_t
),并且您有GNU查找(用于-printf
扩展名),那么您可以使用我从Stéphane看到的一个技巧:
count=$(ssh [email protected]
'find /files/base/incomming -maxdepth 1 -type f -name '*.txt' -printf . | wc -c')
上面的find
命令针对给定目录运行该命令,将深度限制为该目录,并且将匹配项限制为纯文件(-type f
),并且其名称以.txt
;结尾。对于每个匹配项,将打印一个句点,其总数由wc -c
命令替代计数,并从命令替换返回到的赋值中count
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句