2012-09-12 163 views
1

我有一个由数百个文件组成的目录或文件夹。他们以字母的形式命名和安排。我想根据文件名的第一个字符将文件移动到目录或文件夹中(例如,以a开头的文件放入一个文件夹,以r开头的文件放入另一个文件夹等)。根据名称将文件移动到不同的文件夹/目录中

有没有办法做到这一点,而不使用CPAN模块?

+1

你有什么问题? SO不是代码写入服务。 – ikegami

+0

CPAN代码为什么不行?考虑到我将代码发布到CPAN和SO,这是否意味着你不能使用我的代码? – ikegami

+0

我做了一些搜索,我找不到任何可以帮助我做同样的事情。我不知道如何去做这件事。我无法安装任何CPAN模块。我正在寻求帮助,因为我无法完成这部分任务。但并不是要求任何人为我写整个代码。谢谢 – unkaitha

回答

4

文件是否都在该文件夹中,或者它们是否在子文件夹中?如果他们都在一个文件夹,您可以使用opendir访问目录,然后readdir读取文件名和(使用File::Copy模块movecopy功能在其他地方复制。

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模块

+0

谢谢你很多想法和帮助。 – unkaitha

0

使用glob()或内建的File :: Find构建每个开始字母的文件列表。

+1

请你详细说明这个... – unkaitha

相关问题