19

サーバー上にあるすべてのファイルのリストを取得しようとしています (特に、そこにあるすべての pdf ファイル)。total commander を使用してファイルを検索してみました。そこにあるすべてのpdfのリストを取得しましたが、結果をエクスポートする方法がありませんでした(100.000以上のファイルがあります)

bash スクリプトを使用して情報を取得しようとしましたが、Linux の経験があまりなく、自分が何をしているのかよくわかりません。

私のスクリプトは次のようになります:

#!/bin/bash
hostname="<host>"
ftp -i -nv $hostname << EOF
user <username> <password>
ls -R 
EOF

上記のスクリプトを実行すると、

?Invalid command
501 Illegal PORT command
ftp: bind: Address already in use
221 Goodbye

何を検索するかについての助けや指摘をいただければ幸いです。

4

6 に答える 6

45

curlならこれが便利
curl ftp://yourftpserver/dir/ --user username:password

于 2013-04-06T21:28:35.457 に答える
6

ncftpls ftp://yourftpserver/dir/*.pdf

*.pdf上記のコマンドの などのパターンは期待どおりに機能することに注意してください。

再帰の場合は、 を使用します-R。その他のオプションについては、 を参照してくださいman ncftpls

ncftplsncftpパッケージで提供されます。RHEL の場合、このパッケージはリポジトリで入手できますepel

于 2014-09-10T23:48:00.257 に答える
4

ftpデータ転送に PASV (パッシブ) モードを使用するように構成してみてください。これは-pスイッチで行います。

この ftp クライアントで再帰的なファイルの一覧表示ができるかどうかはわかりません。ls -R私の場合、現在の作業ディレクトリにあるファイルとディレクトリのリストを提供しただけです。おそらく、単一のセッション (cURL または ftp を使用) による shell/bash の再帰的 FTP ディレクトリ リストが役立つでしょう。

于 2013-03-29T15:30:36.370 に答える
4

私のコメントの 1 つで言及されているように、コマンドで user:password をプレーン テキストとして使用しないでください。そうしないと、履歴が乗っ取られる危険があります。代わりに、少なくとも保護された/制限されたファイルをユーザー名とパスワードで使用し、コマンドでそれを置き換えます。

ftp://yourftpserver/dir/ --user "$(cat .userpw)"

.userpw は、例のコンテンツを持つ保護/制限されたファイルです: myusername:mypassword

于 2019-03-06T15:49:55.790 に答える