我有一个由数百个文件组成的目录或文件夹。它们以字母顺序命名和排列。我想根据文件名的第一个字符(即以a
开头的文件放入一个文件夹,将文件以r
开头放入另一个文件夹等)将文件移动到目录或文件夹中。
有没有办法在不使用CPAN
模块的情况下完成?
答案 0 :(得分:5)
文件是否都在那个文件夹中,还是在子文件夹中?如果它们都在一个文件夹中,您可以使用opendir访问该目录,然后readdir读取文件名并将其复制到别处(使用File::Copy模块{{1} }或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
模块,但它包含在所有Perl发行版中,因此它不是必须安装的 CPAN模块。
答案 1 :(得分:0)
使用glob()或内置File :: Find为每个起始字母构建一个文件列表。