何百ものファイルで構成されるディレクトリまたはフォルダがあります。それらはアルファベット順に名前が付けられ、配置されています。名前の最初の文字に従ってファイルをディレクトリまたはフォルダに移動したい(つまりa、あるフォルダで始まるファイル、別のフォルダで始まるファイルrなど)。
CPANモジュールを使用せずにそれを行う方法はありますか?
ファイルはすべてその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;
}
これはあなたが望むことを正確に行うわけではありませんが、それはあなたにアイデアを与えるはずです。基本的に、私はディレクトリ内のファイルを使用opendirしreaddirて読み取り、moveそれらを別のディレクトリに移動するために使用しています。
モジュールを使用しましたFile::Copyが、これはすべてのPerlディストリビューションに含まれているため、インストールする必要のあるCPANモジュールではありません。
glob()、またはビルトインを使用File::Findして、開始文字ごとにファイルのリストを作成します。