根据名称将文件移动到不同的文件夹/目录中
问题描述:
我有一个由数百个文件组成的目录或文件夹。他们以字母的形式命名和安排。我想根据文件名的第一个字符将文件移动到目录或文件夹中(例如,以a
开头的文件放入一个文件夹,以r
开头的文件放入另一个文件夹等)。根据名称将文件移动到不同的文件夹/目录中
有没有办法做到这一点,而不使用CPAN
模块?
答
文件是否都在该文件夹中,或者它们是否在子文件夹中?如果他们都在一个文件夹,您可以使用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模块。
+0
谢谢你很多想法和帮助。 – unkaitha
你有什么问题? SO不是代码写入服务。 – ikegami
CPAN代码为什么不行?考虑到我将代码发布到CPAN和SO,这是否意味着你不能使用我的代码? – ikegami
我做了一些搜索,我找不到任何可以帮助我做同样的事情。我不知道如何去做这件事。我无法安装任何CPAN模块。我正在寻求帮助,因为我无法完成这部分任务。但并不是要求任何人为我写整个代码。谢谢 – unkaitha