2016-09-13 143 views
-1

私はbashでスクリプトを作成しています。SFTPを使用してリモートディレクトリにあるdddで始まるファイルの数をカウントする必要があります。各ファイルをダウンロードした後、リモートディレクトリにあるファイルの数とダウンロードされたファイルの数を比較することができます。一致するかどうかを確認してください。SFTPを使用してリモートディレクトリ内のファイル数をカウントする

echo ls -l | sftp "[email protected]$123.45.67.8:/home/user/datafolder/ddd*" | wc -l

作品以上のものを、私はこれを実行すると、それは私が望んでいない私のローカルフォルダにすべてのファイルを、ダウンロードします。

私はこのような何かをしていました。

ファイル数をカウントしてダウンロードするにはどうすればよいですか。私はコードの別の部分でそれらをダウンロードしたいと思います。

+1

'FTP'はファイル転送プロトコルです。 あなたの探しているものが 'SSH'だと思います –

+3

@ user3240704 SFTPはFTPのように[リモートディレクトリの一覧表示などの特定のコマンドを許可します](そして、http://www.tecmint.com/sftp-command-examples/) OPのために良い読書になるでしょう) – user2864740

+1

それは、構文上OPsコード[正しい](http://stackoverflow.com/questions/25412497/sftp-return-number-of-files-in-remote-directory)です。しかし、FTP/SFTPは_ファイル転送プロトコルであるため、OPが回避しようとしている機能であるファイル_を転送することがあります。 SSHを使用すると問題が解決します。 –

答えて

1

コメントの中で、最も良い方法はsshを使うことです。だから、これはリモートディレクトリ内のファイルを一覧表示する簡潔な方法を提供し、私は

ssh [email protected] ls /home/user/datafolder/ddd* | wc -l

0

rsync --list-only欲しかったものを出力します。単に結果をwc -lに渡すだけで、カウント数(...(ドット)ファイルを除く)が処理されます。

rsync --list-only server:/path/to/dir/ | wc -l 

内容ではなく、ディレクトリ自体をカウントするために、末尾'/'に注意してください。再帰的なカウントに-rを追加します。あなたはなど数えファイルを調整するために利用できるすべてのrsyncオプション、例えば--exclude="stuff"を、持っている)