根据文本内容移动文件

时间:2013-12-12 16:27:04

标签: regex perl

我有大约1000个文件(它们不是.txt,但它们确实包含文本)我想根据文件内容的特定部分移动到子目录中。每行包含一个或多个字符串副本

DTM+137:20131001

最后八位数是日期。我想将带有上述字符串的文件移动到名为\01.10.2013\的子文件夹中。使用正则表达式查找字符串很简单,但我没有足够的经验使用任何语言来完成所有工作。我试过用Perl,但是我没有走得太远。

1 个答案:

答案 0 :(得分:1)

如果您有像

这样的字符串
$line = "DTM+137:20131001";

您可以使用这样的分组正则表达式从中提取月,日和年:

($year, $month, $day) = $line =~ /:(\d\d\d\d)(\d\d)(\d\d)$/;

有了这些,您可以使用它们来构建新的目录名称:

$new_folder = sprintf("/some/directory/%02d.%02d.%04d", $day, $month, $year);

创建新目录以防万一:

mkdir 0755, $new_folder;

并使用rename调用将文件移动到那里:

rename $file, "$new_folder/$file";

这可能需要针对您的特定问题进行一些调整,但它应该可以帮助您开始使用。