Você pode tentar isso e ver se funciona. Funciona bem no macOS, indo a vários servidores Linux (CentOS, Ubuntu, etc…):
RECENT=$(ssh [email protected] ls -lrt /remote/path/ | awk '/.ubx/ { f=$NF }; END { print f }');
scp [email protected]:/remote/path/${RECENT} /local/path/${RECENT};
A primeira linha obtém o arquivo mais recente com a extensão .ubx
e o atribui à variável $RECENT
.
A próxima linha, em seguida, apenas executa o próprio comando SCP. Você pode transformá-lo em um "one-liner" apenas combinando as duas linhas em uma assim:
RECENT=$(ssh [email protected] ls -lrt /remote/path/ | awk '/.ubx/ { f=$NF }; END { print f }'); scp [email protected]:/remote/path/${RECENT} /local/path/${RECENT};
E, é claro, você pode definir variáveis para o usuário, hostname, /remote/path/
e /local/path/
e apenas colocá-las em um arquivo de script Bash para executá-las com um comando como get_latest_ubx.sh
, para que você não tem que lidar com a digitação de um comando como esse toda vez que você precisar usá-lo.
#!/bin/bash
# Assign the variables.
USER='someone';
HOST='example.com';
LOCAL_PATH='/local/path/';
REMOTE_PATH='/remote/path/';
# Get the most recent '.ubx' file and assign it to 'RECENT'.
RECENT=$(ssh ${USER}@${HOST} ls -lrt ${REMOTE_PATH} | awk '/.ubx/ { f=$NF }; END { print f }');
# Run the actual SCP command.
scp ${USER}@${HOST}:${REMOTE_PATH}${RECENT} ${LOCAL_PATH}${RECENT};