根据文件名称将文件移动到不同的文件夹/目录中

时间:2012-09-12 00:20:49

标签: perl directory

我有一个由数百个文件组成的目录或文件夹。它们以字母顺序命名和排列。我想根据文件名的第一个字符(即以a开头的文件放入一个文件夹,将文件以r开头放入另一个文件夹等)将文件移动到目录或文件夹中。

有没有办法在不使用CPAN模块的情况下完成?

2 个答案:

答案 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为每个起始字母构建一个文件列表。