Bash 比较备份文件的时间戳并删除最旧的文件

Bash 比较备份文件的时间戳并删除最旧的文件,bash,shell,sh,Bash,Shell,Sh,我开发了一个备份shell脚本,它基本上将一个文件复制到另一个目录,并在其中附加一个时间戳,时间戳粘在一起构成一个数字 这样的事情 cp file1 directory/{file1##*/} - {date +'%Y%m%d%H%M%S'} 现在,假设我有'file1-20151009141528'和许多其他file1备份。我如何比较它们并删除日期占最小数字的那个 老实说,这是我最后的办法。我试了又试,但没用 非常感谢 编辑: 我想做点像这样的事 for item in "$director

我开发了一个备份shell脚本,它基本上将一个文件复制到另一个目录,并在其中附加一个时间戳,时间戳粘在一起构成一个数字

这样的事情

cp file1 directory/{file1##*/} - {date +'%Y%m%d%H%M%S'}
现在,假设我有'file1-20151009141528'和许多其他file1备份。我如何比较它们并删除日期占最小数字的那个

老实说,这是我最后的办法。我试了又试,但没用

非常感谢

编辑:

我想做点像这样的事

for item in "$directory1"
do
 if *number of file1 - 20151009141528 is smaller than all remaining backup files, remove*
done

我只需要使用像那样的排序方法,通过时间戳对它们进行排序,然后使用tail
tail-n1
只显示最后一个。它对您有帮助吗?

您可以在备份文件所在的目录中运行以下命令:
ls | sort-V | head-n1 | xargs rm
。它会对你的文件进行排序,然后拿起你头上的文件并将其删除。此命令不关心文件是最旧的还是最新的。它根据
排序
删除最小值。如果您想在脚本中运行它。只需导航到您的目录,然后运行命令。有点像:

cd /path/to/directory;
ls|sort -V |head -n 1 |xargs rm;

没有,但真的是我的错。老实说,我不知道如何在我的脚本中插入它,因为我从来没有使用过tail或sort。
ls | sort-k3-r | tail-n1 | xargs rm
这将删除数量最小的文件。