5

Мне нужно удалить все файлы в удаленном каталоге, используя SSH,

Сам каталог не должен быть удален, поэтому ответ @Wes не тот, который мне нужен. Если бы это был локальный каталог, я бы запустил rm -rf dir/* .

4 ответа4

15

Это так просто, как:

ssh HOSTNAME rm -rf "/path/to/the/directory/*"
7

По словам человека из 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 , без помощи оболочки.

Какой-то похожий вопрос

1

Это должно сделать трюк:

ssh HOSTNAME "sh -c 'rm -rf /path/to/the/directory/*'"

Обратите внимание, что вам необходимо заключить удаленную команду в двойные кавычки, а путь в одинарные кавычки.

-1

Удалить все файлы из иерархии каталогов:

ssh user@HOSTNAME 'rm $(find /path/to/directory -type f)' 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .