给出如下标记的目录中的日志文件:
log_from_2012_08_14-11:57:21_To_2012_09_14-11:56:12.zip log_from_2012_10_14-11:57:21_To_2012_11_14-11:56:12.zip
鉴于此类文件大约有155450个,我该如何以简单有效的方式执行以下操作:
使用logrotate或其他工具为每个月创建一个文件夹:例如,mkdir $ currentMont = october,并将所有10月,2012年的文件放在那里,依此类推,每个月。
答案 0 :(得分:1)
这听起来像一个带有几个嵌套for循环的bash脚本可以解决问题。
类似的东西:
for year in $(seq -f "%02g" 0 20); do
for month in $(seq -f "%02g" 0 12); do
dest = "20${year}-${month}"
mkdir "$dest"
mv "log_from_${dest}*" "${dest}";
done;
done;
显然,您需要根据自己的需要进行调整。如果一个目录中的文件太多,则可能会遇到行水线限制,在这种情况下,您必须使用find . | xargs mv
来避免此问题。