3

何百ものファイルで構成されるディレクトリまたはフォルダがあります。それらはアルファベット順に名前が付けられ、配置されています。名前の最初の文字に従ってファイルをディレクトリまたはフォルダに移動したい(つまりa、あるフォルダで始まるファイル、別のフォルダで始まるファイルrなど)。

CPANモジュールを使用せずにそれを行う方法はありますか?

4

2 に答える 2

9

ファイルはすべてその1つのフォルダーにありますか、それともサブフォルダーにありますか?それらがすべて1つのフォルダーにある場合は、opendirを使用してディレクトリにアクセスし、readdirを使用してファイル名を読み取り、他の場所にコピーできます(File ::Copyモジュールmoveまたはcopy関数を使用)。

use strict;
use warnings;
use autodie;
use File::Copy;   #Gives you access to the "move" command

use constant {
    FROM_DIR => "the.directory.you.want.to.read",
    TO_DIR   => "the.directory.you want.to.move.the.files.to",
};

#Opens FROM_DIR, ao I can read from it
opendir my $dir, FROM_DIR;

# Loopa through the directory
while (my $file = readdir $dir) {
    next if ($file eq "." or $file eq "..");
    my $from = FROM_DIR . "/" . "$file";
    move $from, TO_DIR;
}

これはあなたが望むことを正確に行うわけではありませんが、それはあなたにアイデアを与えるはずです。基本的に、私はディレクトリ内のファイルを使用opendirreaddirて読み取り、moveそれらを別のディレクトリに移動するために使用しています。

モジュールを使用しましたFile::Copyが、これはすべてのPerlディストリビューションに含まれているため、インストールする必要のあるCPANモジュールではありません。

于 2012-09-12T03:22:26.903 に答える
0

glob()、またはビルトインを使用File::Findして、開始文字ごとにファイルのリストを作成します。

于 2012-09-12T00:26:30.247 に答える