Как получить количество файлов, присутствующих в удаленном каталоге, используя SFTP Command

Просто установите терминал по умолчанию в profile.tmux:

$ echo 'set -g default-terminal "screen-256color"' >> ~/.byobu/profile.tmux
0
06.07.2019, 08:26
2 ответа

Если количество файлов не слишком велико, вы можете использовать подстановку, чтобы установить позиционные параметры для каждого совпадающего имени файла, а затем вывести обратно подсчет:

count=$(ssh Dbprd@101.102.130.23 
        'set -- /files/base/incomming/*.txt; echo "$#"')

Или, если количество файлов равно большому (, но меньшему uintmax_t), и у вас есть GNU find (для расширения -printf), вы можете использовать трюк, который я видел от Стефана:

count=$(ssh Dbprd@101.102.130.23 
        'find /files/base/incomming -maxdepth 1 -type f -name '*.txt' -printf. | wc -c')

Вышеупомянутое запускает команду findдля данного каталога, ограничивая глубину только этим каталогом, а также ограничивая совпадения простыми файлами(-type f)и имена которых заканчиваются на .txt; для каждого совпадения печатается один период, общее количество которых подсчитывается с помощью wc -cи возвращается из подстановки команды в присваивание count.

2
28.01.2020, 02:16

sftpне разветвляет оболочку, поэтому вы не можете использовать там свои обычные команды. Предполагая, что вы также можете войти через ssh, вы можете использовать

ssh Dbprd@101.102.130.23 'ls /files/base/incomming/*.txt' | wc -l

или

ssh Dbprd@101.102.130.23 'ls /files/base/incomming/*.txt | wc -l'

для выполнения задачи, описанной в вопросе.

Если (по какой-либо причине )вы хотите использовать sftp, вам нужно использовать одну из команд, доступных в ftp(, и надеяться, что ftpdна другой стороне знает, как обращаться с подстановочными знаками):

echo 'ls -l /files/base/incomming/*.txt' | sftp Dbprd@101.102.130.23 | wc -l
3
28.01.2020, 02:16

Теги

Похожие вопросы