在我的服务器上,我在日期之后有一堆已归档的文件夹名称:yyyy-mm-jj
这样可以轻松地对文件夹进行排序并查找相关数据。
我想删除在给定数据之前完成的所有档案。使用我的文件夹命名,自然排序顺序与常规排序相同,这样我就可以依赖通常的bash结构:
if [ $foldername -lt "yyyy-mm-jj" ]; then
rm -r $foldername
fi
有更有效的方法吗?
答案 0 :(得分:5)
[ $foldername -lt "yyyy-mm-jj" ]
始终为false,因为-lt
是一个数字运算符:您要比较的字符串不是数字,因此它们都被视为0.使用{{1}或者<
运算符来比较字符串(这是一个ksh / bash / zsh功能)。请注意,只有字符串运算符,没有>
或<=
。
通配符扩展以字典顺序返回匹配的名称。因此,要对最旧的文件进行操作,请循环浏览文件,并在找到过时的文件时将其分解。
>=