Eu tenho um servidor sftp ([email protected]). Estou tentando me conectar a ele e procurar arquivos que contenham .txt no caminho (/files/base/incomming) e obter a contagem de linhas em cada arquivo que contém (.txt). Eu estava tentando alcançar com o seguinte comando, mas está jogando como comando inválido:
echo "wc -l *.txt*"|sftp -q [email protected]:/files/base/incomming
o/p
sftp>
invalid command
Existe alguma maneira de resolver isso?
sftp
não bifurca um shell, então você não pode usar seus comandos usuais lá. Supondo que você também possa fazer loginssh
, você pode usarou
para realizar a tarefa descrita na pergunta.
Se (por qualquer motivo) você quiser usar
sftp
, você precisa usar um dos comandos disponíveisftp
(e esperar queftpd
o outro lado saiba como lidar com curingas):Se o número de arquivos não for muito grande, você pode usar globbing para definir os parâmetros posicionais para cada nome de arquivo correspondente e, em seguida, repetir a contagem:
Ou, se o número de arquivos for grande (mas menor que
uintmax_t
), e você tiver GNU find (para a-printf
extensão), poderá usar um truque que vi de Stéphane :O comando acima executa o
find
comando no diretório fornecido, limitando a profundidade apenas a esse diretório e também limitando as correspondências a serem arquivos simples (-type f
) e também cujo nome termina com.txt
; para cada correspondência, um único ponto é impresso, cujo número total é contadowc -c
e retornado da substituição do comando para a atribuição acount
.