Используйте find
вместо ls
. См. Почему не разборls
(и что делать вместо )? .
заключите команды, которые вы хотите запустить в удаленной системе, в кавычки (, но обратите внимание, что могут возникнуть трудности с вложенными кавычками )или в этом документе.
напр. используя версии GNU find
, sort
, head
иcut
:
ssh -i LightsailDefaultKey-eu-west-2.pem ubuntu@xxx.xxx.xxx.xxx \
'find /data/ -maxdepth 1 -type f -printf "%Ts\t%p\0" | sort -z -nr |
head -z -n 2 | cut -z -f2 | xargs -0r rm -f --'
Обратите внимание, что я использовал двойные -кавычки вокруг строки формата printf вместо одинарных -. Это потому, что они встроены в одинарные кавычки -, обертывающие весь конвейер команд, выполняемых ssh
. Вместо этого я мог бы использовать -printf '\''%Cs\t%p\0'\''
, но (, так как здесь нет риска интерполяции переменных и т. д. ), проще использовать двойные -кавычки.
Формат -printf
печатает отметку времени последнего -измененного файла (в секундах, начиная с эпохи, легко сортируемую как число по sort -z -rn
), табуляции и полному имени файла. cut
удаляет метку времени и вкладку, оставляя только имя файла для передачи в xargs
.
Альтернативой может быть использование heredoc:
ssh -i LightsailDefaultKey-eu-west-2.pem ubuntu@xxx.xxx.xxx.xxx <<-'EOF'
find /data/ -maxdepth 1 -type f -printf '%Ts\t%p\0' | sort -z -nr |
head -z -n 2 | cut -z -f2 | xargs -0r rm -f --
EOF
Nextcloud — это решение. Единственным недостатком является то, что с фотографиями мне приходится загружать их вручную, потому что я не на андроиде. Я надеялся сделать фото и сохранить прямо в Nextcloud.