
Net::FTPを使いファイル一覧のみを取得したい
以前の質問では大変お世話になりました。
「Net::FTPを使いフォルダ一覧を取得」
http://okwave.jp/qa/q5555220.html
今度は、Net::FTPを使いファイル一覧のみを取得したいと思ってます。
(ここから)
use Net::FTP;
my $ftp = Net::FTP->new("hoge.sav.ne.jpp", Debug => 0 , Passive => "true"); # 接続
$ftp->login("xxxx", "pass"); # ログイン
my @dir = $ftp->cwd('/public_html');
my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
my @dir_names_full = @dir[2..$#dir]; # 自フォルダと親フォルダ("."と"..")を除く。
my @dir_names_short = map { (split)[8] } @dir_names_full; # フォルダ名のみを取得
$ftp->quit;
print "$_<br>\n" for @dir_names_full;
(ここまで)
my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
の部分の「grep /^d/,」を削除したら、ファイルも一緒に表示させることは出来たのですが
正しく表示されませんでした。
(ここから)
drwxrwx--- 2 xxxx xxxxx 48 Sep 3 14:59 Maildir
drwx---r-x 2 xxxx xxxxx48 Sep 3 14:59 log
-rw-r--r-- 1 xxxxnobody 2932 Oct 21 09:34 ent4.html
-rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent5.html
-rw-r--r-- 1 xxxx nobody 2878 Oct 21 09:34 index.html
(ここまで)
最終的な結果は
(ここから)
-rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent1.html
-rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent2.html
-rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent3.html
-rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent4.html
-rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent5.html
-rw-r--r-- 1 xxxx nobody 2878 Oct 21 09:34 index.html
(ここまで)
で表示させたいのです。
検索をしていたら、grepで出来そうなのかと思いやってみましたがうまくいきませんでした。
お手数かけます。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こちらで試してみたのですが、
ディレクトリ以外のファイルが一覧で取得できました。
やっている事は、取得した文字列の最初の一文字目が
どの文字かを判別して配列に格納している訳ですが、
以下のようにやってみても結果は変わらないでしょうか?
my @dir = grep /^\-/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
または
my @dir = grep /^[^d]/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得(d以外とマッチ)
diszoさん
回答ありがとうございます。
>my @dir = grep /^\-/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
>または
>my @dir = grep /^[^d]/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得(d以外とマッチ)
申し訳ございませんでした。
どっちも問題ありませんでした。単純な記述ミスを別の場所でやっていました。
ありがとうございます!!
これで作業が進められます。
No.1
- 回答日時:
簡単にやるのでしたら、
my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
の部分を
my @dir = grep /^-/, $ftp->dir; # ←ファイル一覧をdirコマンドで取得
に変更するではだめですか?
この回答への補足
diszoさん
回答ありがとうございます。
早速やってみました。
my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
を
my @dir = grep /^-/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
としましたが結果が変わりませんでした。
やり方が悪いのでしょうか?
今回サーバーの内容はファイルは拡張子がhtmlを対象としているので、それで取得できないかとも思ってましたがうまくいっておりません。
お手数かけます。
以上、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batファイルでrenameができませ...
-
Windowsで複数のファイルを同じ...
-
dos変数の%~dp0は powershellで...
-
パスから最後のディレクトリだ...
-
一定時間が経過したフォルダの削除
-
FindFirstFileとFindNextFileで...
-
パイプをopenして/usr/bin/grep...
-
awkスクリプトでダブルクォーテ...
-
Perlで特定行から特定行までを...
-
unlink 、renameが使えない理由
-
openした後、closeしないでプロ...
-
WindowsでPerlをする際,1行目の...
-
cgiで表示するhtmlページ内でバ...
-
C言語で特定の行を抽出する方法...
-
fortranのファイル入出力のopen文
-
C#でCSVファイルを逐一更新したい
-
close()で例外が投げられる理由
-
エラーログ「\\x8ew\\x92\\xe8...
-
fopen64について
-
perlで大容量CSVのsort方法につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windowsで複数のファイルを同じ...
-
batファイルでrenameができませ...
-
vba dir の相対パス
-
パスから最後のディレクトリだ...
-
FindFirstFileとFindNextFileで...
-
readdir()で得られるファイル・...
-
ディレクトリー内のリスト出力...
-
ファイル名と更新日付の取得に...
-
C言語でファイル名を取得
-
ファイルの削除について
-
シェルでfind結果を文字列で比...
-
dos変数の%~dp0は powershellで...
-
フォルダに入っているファイル...
-
サーバー内にある指定した拡張...
-
CGIで日本語名ファイルのアップ...
-
find関数が1階層(カレントディ...
-
下のディレクトリ(3つ)に含ま...
-
ファイル名が日本語の物をダウ...
-
<>の意味が分かりません
-
makefileでファイルをコピー(...
おすすめ情報