我有大约1000个文件(它们不是.txt,但它们确实包含文本)我想根据文件内容的特定部分移动到子目录中。每行包含一个或多个字符串副本
DTM+137:20131001
最后八位数是日期。我想将带有上述字符串的文件移动到名为\01.10.2013\
的子文件夹中。使用正则表达式查找字符串很简单,但我没有足够的经验使用任何语言来完成所有工作。我试过用Perl,但是我没有走得太远。
答案 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";
这可能需要针对您的特定问题进行一些调整,但它应该可以帮助您开始使用。