我正在尝试删除与我们的命名标准不匹配的文件和文件夹。好吧,我似乎可以遍历一系列收集的文件和文件夹,这些文件和文件夹不匹配并删除它们。我遇到的问题是我无法删除其中包含空格的文件。我在带有Strawberry Perl的Windows上运行。
以下是数组的示例
Picture.jpg
Sample Document.doc
New Folder
在此示例中,我唯一可以成功删除的是Picture.jpg
。
这是函数
foreach my $folder (@$returned_unmatches) {
print "$folder\n";
remove_root_junk($office,$folder);
}
这是子程序。
sub remove_root_junk {
my $office = shift;
my $folder = shift;
my $order_docs_path = $office_names{$office};
unlink "$order_docs_path\\$folder";
}
$order_docs_path
只是我工作地点的完整路径。在这种情况下C:\Data\Locations\Canton\Order_Documents
如果有这个帮助的话。
答案 0 :(得分:3)
在正常情况下,不支持直接取消链接目录。 unlink
的文档说:
注意:除非您是超级用户且 -U 标志提供给Perl,否则
unlink
不会尝试删除目录。即使满足这些条件,也要警告取消链接目录可能会对文件系统造成损害。最后,许多操作系统不支持在目录上使用unlink
。请改用rmdir
。
如果您的子目录不为空,则rmdir
文档建议在File::Path中使用rmtree
。