我正在寻找一种简单的方法来检查远程路径是指向目录(或符号链接目录)还是指向可读文件。
如果它是一个目录,那么我可以scp
从该目录中将多个特定文件传输到我的本地系统,而如果它是一个文件,我只能使用scp
该文件。
我以-方式给出的文件路径scp
为user@host:/path/to/dir-or-file
.
注意:在本地系统(Windows 上的 MobaXterm)上,我有bash
并且scp
可用ssh
,而远程系统(我想检查路径所在的位置)是一个完整的 Linux 发行版。
您正在寻找传输文件(如果是文件)或目录的一部分(如果是目录)。
如果
scp
被告知在没有-r
选项的情况下传输目录,它将失败。您可以使用它来检测远程主机上的给定路径是否是目录,然后如果第一次无法将路径名作为文件获取,则scp
第二次调用以获取目录中的特定文件。scp
当然,如果你想传输整个目录(如果它是一个目录)你可以这样做
无论路径是目录还是文件,这都会起作用。
您可以运行以下命令:
结果将包括可能的文件类型:
注意:如果您只需要测试目录或不在 bash shell 脚本中,您可以只使用测试,如:
一种快速而肮脏的方法,如果您不介意错误消息并且只需要复制非点文件,这是
尾随点将远程文件复制到当前目录。调整口味。该
-p
标志保留时间戳和权限。如果不需要,请省略。此信息在 ls 的输出中也可用:第一列中的第一个符号是:“d”表示目录 “l”表示链接