Мне нужно удалить все файлы в удаленном каталоге, используя SSH,
Сам каталог не должен быть удален, поэтому ответ @Wes не тот, который мне нужен. Если бы это был локальный каталог, я бы запустил rm -rf dir/*
.
Это так просто, как:
ssh HOSTNAME rm -rf "/path/to/the/directory/*"
По словам человека из ssh
на моей машине:
If command is specified, it is executed on the remote host instead
of a login shell.
Это означает, что расширение оболочки команды, передаваемой ssh, не будет выполняться на удаленной стороне. Поэтому нам нужна "автономная" команда, которая не ретранслирует расширение оболочки.
ssh user@remote-machine "find /path/to/directory -type f -exec rm {} \;"
Здесь вся работа по поиску удаляемых файлов выполняется исключительно с помощью find
, без помощи оболочки.
Какой-то похожий вопрос
Это должно сделать трюк:
ssh HOSTNAME "sh -c 'rm -rf /path/to/the/directory/*'"
Обратите внимание, что вам необходимо заключить удаленную команду в двойные кавычки, а путь в одинарные кавычки.
Удалить все файлы из иерархии каталогов:
ssh user@HOSTNAME 'rm $(find /path/to/directory -type f)'