我是 shell 脚本新手,所以我需要一些帮助。我有一个充满备份的目录。如果我有超过 10 个备份文件,我想删除最旧的文件,以便仅留下 10 个最新的备份文件。
到目前为止,我知道如何计算文件数,这看起来很简单,但是如果计数超过 10,我该如何删除最旧的文件呢?
if [ls /backups | wc -l > 10]
then
echo "More than 10"
fi
尝试这个:
ls -t | sed -e '1,10d' | xargs -d '\n' rm
这应该处理文件名中的所有字符(换行符除外)。
这里发生了什么?
-
ls -t
按修改时间降序列出当前目录中的所有文件。即,最近修改的文件位于第一个,每行一个文件名。
-
sed -e '1,10d'
删除前10行,即最新的10个文件。我用这个代替tail
因为我永远不记得我是否需要tail -n +10
or tail -n +11
.
-
xargs -d '\n' rm
收集每个输入行(没有终止换行符)并将每行作为参数传递给rm
.
与此类事情一样,请在安全的地方进行实验。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)