リモートパスがディレクトリかファイルであるかを確認するには?

リモートパスがディレクトリかファイルであるかを確認するには?

私は、リモートパスがディレクトリ(またはシンボリックリンクディレクトリ)または読み取り可能なファイルを指していることを確認するための短くて簡単な方法を探しています。

ディレクトリの場合は、scp特定のファイルをそのディレクトリ内からローカルシステムに転送できますが、ファイルの場合はscpそのファイルでのみ作業できます。

私が知っていたファイルパスscpuser@host:/path/to/dir-or-file

bash注:ローカルシステム(WindowsのMobaXterm)では使用できますが、リモートシステムscpsshパスを確認したい場所)は完全なLinuxディストリビューションです。

ベストアンサー1

ファイル(ファイルの場合)またはディレクトリの一部(ディレクトリの場合)を転送しようとしています。

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

scpoptionsなしでディレクトリを転送するように指示された場合は-r失敗します。これを使用して、リモートホストの指定されたパスがディレクトリであることを検出し、scp最初にパス名をファイルとして取得できない場合は、2番目の呼び出しでディレクトリ内の特定のファイルを取得できます。scp

もちろん、移動したい場合みんなディレクトリ(ディレクトリの場合)できること

scp -r user@host:/path/to/dir-or-file local/path

パスがディレクトリであるかファイルであるかに関係なく動作します。

おすすめ記事