• ベストアンサー
  • 困ってます

Perlで フォルダ内の全てのファイルを別のフォルダにコピーするには

  • 質問No.4686259
  • 閲覧数1576
  • ありがとう数2
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 85% (391/456)

お世話になります。
多分ご存知の方には簡単な話だと思いますが教えていただけませんか。
Aフォルダにあるhoge.txtをBフォルダにコピーしたければ
use File::Copy;
copy "./A/hoge.txt", "./B/hoge.txt" or die $!;
で出来るのはわかっているのですが、Aフォルダにある全てのファイルをBフォルダにコピーするというのはどのようなコードを書いたらよいのでしょう。
ちなみにAフォルダには100以上ファイルがあります。ファイルは全部テキストファイルです。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 52% (54/103)

$src_dir = "./a";
$dst_dir = "./b";

opendir(DIR, "$src_dir");
my @Files = grep { -f "$src_dir/$_" && /\.txt/ } readdir(DIR);
closedir DIR;

foreach my $file (@Files) {
copy ...
}

こんな感じですかね
補足コメント
souta_n

お礼率 85% (391/456)

すみません。ほとんど素人なんで。。。その『copy ..』のところも明記してもらうとすごく助かるんですけど、お願いできませんでしょうか
投稿日時:2009/02/03 20:39

その他の回答 (全4件)

  • 回答No.5

ベストアンサー率 75% (3/4)

ヒントでは無理なようなので、具体的に・・・。
例では、./log/A/○○.txt のようなパスの場合の記述です。

my $dir = '/log';# 対象ディレクトリ名(相対パスでもOKです)

opendir DH, $dir or die "$dir:$!";
while (my $file = readdir DH) {
use File::Copy;
copy "./A/$file, "./B/$file" or die $!;
}
closedir DH;

以上。未チェックですが。
お礼コメント
souta_n

お礼率 85% (391/456)

結局いろいろ自身でも勉強して、#1の方の回答を理解できました。
おかげさまで何とか目的を果たせました。
他にも沢山のご指導をいただけて感謝しています。
何か回答を追う毎に話が難しくなってきたようです。私の理解の範疇を超えてきました。早く皆様の域に達せられるように努力します。
投稿日時:2009/02/19 00:25
  • 回答No.4

ベストアンサー率 52% (391/751)

ファイルの再帰的なコピーをする場合、unixで提供されている
cp -R(又は-r)コマンドが使用できます。
これをsystem関数を使用して、呼び出してはいかがでしょうか。
  • 回答No.3

ベストアンサー率 23% (3656/15482)

や, 多分 #2 は
use File::Copy::Recursive;
して
rcopy_glob
使えってことなんだろうけど...
rcopy_glob("./A/*.txt", "./B");
みたいな感じで使えるんじゃないかなぁと思う. ちなみにそこで参照してる URL の内容がチンプンカンプンなのはしょうがないね. 誤訳が多すぎ. これなら英語を読んだ方がまだ意味がわかる... と書きたいところだけど英語も微妙にあやしい気がする.
  • 回答No.2
File::Copy::Recursive でいいやん
補足コメント
souta_n

お礼率 85% (391/456)

foreach my $file (@Files) {
File::Copy::Recursive;
}
ですか? エラーは出ませんがファイルもコピーされません。
検索してこんなページ見つけたけど・・・あぁチンプンカンプン
http://perldoc.jp/docs/modules/File-Copy-Recursive-0.06/Recursive.pod
投稿日時:2009/02/03 21:08
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ