如何检查远程路径是目录还是文件?

hal*_*leo 2 ls ssh scp remote directory

我正在寻找一种简短的简单方法来检查远程路径是否指向目录(或符号链接目录)或可读文件。

如果它是一个目录,那么我可以scp从该目录中的多个特定文件到我的本地系统,而如果它是一个文件,我只能使用scp该文件。

我有以 - 方式给出的文件路径scpuser@host:/path/to/dir-or-file.

注意:在本地系统(Windows 上的 MobaXterm)上,我有bashscp并且ssh可用,而远程系统(我要检查的路径所在的路径)是完整的 Linux 发行版。

Kus*_*nda 6

您正在寻找传输文件(如果它是一个文件)或部分目录(如果它是一个目录)。

if ! scp user@host:/path/to/dir-or-file local/path
then
    scp user@host:/path/to/dir-or-file/some-specific-file local/path
fi
Run Code Online (Sandbox Code Playgroud)

如果scp被告知在没有-r选项的情况下传输目录,它将失败。您可以使用它来检测远程主机上的给定路径是否是目录,然后scp如果第一次scp无法将路径名作为文件获取,则第二次调用以获取目录中的特定文件。

当然,如果你想传输整个目录(如果它是一个目录),你可以这样做

scp -r user@host:/path/to/dir-or-file local/path
Run Code Online (Sandbox Code Playgroud)

无论路径是用于目录还是文件,这都可以工作。