Answers:
以我的经验,rmdir倾向于在空目录上工作。如果您要删除目录foo,我将执行以下操作:
$rm foo/*
$rmdir foo
rm foo/*但由于foo/包含非空目录而无法正常工作。还幸运的rsync是,我在本地创建了一个空目录,然后用于rsync -rv --delete empty_local_dir/ host.example.org:/foo/删除远程foo/目录下的所有内容。之后,可以rmdir foo通过SFTP。
您尚未指定正在使用的SFTP客户端。因此,我假设使用OpenSSH SFTP(sftp)。
rmdirOpenSSH SFTP客户端中的命令直接映射到SSH_FXP_RMDIRSFTP协议请求。版本3的SFTP规范(由OpenSSH使用的规范)明确提到该SSH_FXP_RMDIR操作可能会失败,“如果指定的目录不为空”(尽管它似乎没有强制要求)。
如果目录没有子目录,则可以使用rm foo/*(意味着OpenSSH SFTP命令,而不是shell命令)首先删除目录中的所有文件。然后使用rmdir。
rm -r *使用SFTP。我认为这不可能。
sftp(OpenSSH命令行客户端)无法使用。如果您有足够的客户端,则可以使用SFTP(协议)。