您可以在shell中相当简洁地完成这项工作,而不需要python。我是科恩希尔:ls -1tr | while read f
do
if [[ -f $f && $f == image_*-*-*_* ]]
then
echo $f | ( IFS=_ read prefix_unwanted ymd rest_unwanted ; echo $ymd ) | IFS=- read y m d
[[ -n $y && -n $m && -n $d ]] && mkdir -p $y/$m/$d && mv $f $y/$m/$d
fi
done
因此,使用IFS(字段分隔符)将文件名拆分两次-一次将年份周一作为一个,然后再次拆分该部分。在
mkdir-p只有mks dir如果不在那里,所以这相当快。在
在bash上,第二次读取将不起作用,因此请使用变量替换${ymd//-//}:
^{pr2}$
与上面扩展的shell[]相比,[]不能管理扩展的shell测试。在
唯一可能出现问题的是,如果写这些jpg的东西打开、关闭并再次打开它们,因为mv将mv inode,如果它拾取一个仍在写入的文件,那么只有当您能够确保writer一次性完成所有操作并完成时(因为编写器不知道inode被移动了)
我假设这是unix平台-如果是Windows,它可能不太适合。在