2012-09-12 161 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

相關問題