我正在使用File :: Find和文件I/O文本文件解析一系列的目錄並將內容移動到一個新的文件夾。這是一個簡單的腳本(見下文):Perl查找 - 沒有這樣的文件或目錄
#!/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
當我上個月執行它的代碼工作,但它現在回來了「文件或目錄未找到「錯誤。實際的錯誤是「沒有這樣的文件或directoryerDocuments/coastalalglive/Account2805」。我知道它正在搜索的所有目錄都存在。我手動鍵入其中一個目錄,腳本執行正常:
find(\&move_documents, "/opt/CollectMinderDocuments/coastalalglive/Account2805/");
我不知道爲什麼錯誤被返回。先謝謝您的幫助。
這不是實際的錯誤,實際的錯誤將包括行號。 – TLP
system()命令返回什麼? $ rc = system(...); print $ rc >> 8 – JRFerguson
爲什麼使用系統調用而不是像'mkdir()'或File :: Copy-> move()'這樣的函數? – CanSpice