如何删除名称小于...的文件夹?

时间:2012-09-16 15:05:01

标签: bash filesystems

在我的服务器上,我在日期之后有一堆已归档的文件夹名称:yyyy-mm-jj这样可以轻松地对文件夹进行排序并查找相关数据。

我想删除在给定数据之前完成的所有档案。使用我的文件夹命名,自然排序顺序与常规排序相同,这样我就可以依赖通常的bash结构:

if [ $foldername -lt "yyyy-mm-jj" ]; then
    rm -r $foldername
fi

有更有效的方法吗?

1 个答案:

答案 0 :(得分:5)

[ $foldername -lt "yyyy-mm-jj" ]始终为false,因为-lt是一个数字运算符:您要比较的字符串不是数字,因此它们都被视为0.使用{{1}或者<运算符来比较字符串(这是一个ksh / bash / zsh功能)。请注意,只有字符串运算符,没有><=

通配符扩展以字典顺序返回匹配的名称。因此,要对最旧的文件进行操作,请循环浏览文件,并在找到过时的文件时将其分解。

>=