File::Findとファイルi/oをテキストファイルで使用して、一連のディレクトリを解析し、コンテンツを新しいフォルダに移動しています。これは単純なスクリプトです(以下を参照)。
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Copy;
my $dir = "/opt/CollectMinderDocuments/coastalalglive"; #base directory for Coastal documents
#read file that contains a list of closed IDs
open(MYDATA, "Closed.txt");
mkdir("Closed");
while(my $line = <MYDATA>) {
chomp $line;
my $str = "$dir" . "/Account$line";
print "$str\n";
find(\&move_documents, $str);
}
sub move_documents {
my $smallStr = substr $File::Find::name, 43;
if(-d) {
#system("mkdir ~/Desktop/Closed/$smallStr");
print "I'm here\n";
system("mkdir /opt/CollectMinderDocuments/coastalalglive/Closed/$smallStr");
#print "Made a directory: /opt/CollectMinderDocuments/coastalalglive/Closed/$smallStr\n";
}
else {
print "Now I'm here\n";
my $smallerStr = substr $File::Find::dir, 43;
my $temp = "mv * /opt/CollectMinderDocuments/coastalalglive/Closed/$smallerStr/";
system("$temp");
}
}
テキストファイルには、番号のリストが含まれています。
1234
2805
5467
先月実行したときにコードは機能しましたが、「ファイルまたはディレクトリが見つかりません」というエラーが返されるようになりました。実際のエラーは「そのようなファイルまたはディレクトリはありません。Documents/coastalalglive/Account2805」です。私はそれが検索しているすべてのディレクトリが存在することを知っています。ディレクトリの1つを手動で入力しましたが、スクリプトは正常に実行されます。
find(\&move_documents, "/opt/CollectMinderDocuments/coastalalglive/Account2805/");
エラーが返される理由がわかりません。助けてくれてありがとう。