Вы можете попробовать это и посмотреть, работает ли это. Он отлично работает для меня на macOS, идущих на различные серверы Linux (CentOS, Ubuntu и т.д.):
RECENT=$(ssh someone@example.com ls -lrt /remote/path/ | awk '/.ubx/ { f=$NF }; END { print f }');
scp someone@example.com:/remote/path/${RECENT} /local/path/${RECENT};
Первая строка получает самый последний файл с расширением .ubx
и назначает его переменной $RECENT
.
Следующая строка просто запускает саму команду SCP. Вы можете превратить его в «одну строку», просто объединяя обе строки в одну, например так:
RECENT=$(ssh someone@example.com ls -lrt /remote/path/ | awk '/.ubx/ { f=$NF }; END { print f }'); scp someone@example.com:/remote/path/${RECENT} /local/path/${RECENT};
И, конечно же, вы можете просто установить переменные для пользователя, имени хоста, /remote/path/
и /local/path/
и просто поместить его в файл сценария Bash, чтобы запустить его одной командой, такой как get_latest_ubx.sh
чтобы вы не Тебе приходится иметь дело с вводом такой команды каждый раз, когда тебе нужно ее использовать.
#!/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};