我在我的脚本中运行此命令,它删除了每个文件中除了5个以外的所有文件,但它没有根据日期保留最后5个文件:
ls -rv | awk -F_ '++n[$1]>5' | xargs rm
**下划线是前缀(主机名)和文件名之间的分隔符。
我也尝试了其他一些东西,但它似乎没有做到这一点。
我正在运行它来删除文件夹中除了最后n个文件之外的所有文件,它可以正常工作:
rm -f $(ls -1t -I "*.sh" | tail -n +21)
这适用于所有事情。
我有另一个文件夹,其中包含来自各种设备的备份,这些设备都有主机名前缀。格式为:hostname_config.backup-timestamp。
答案 0 :(得分:1)
@rici解决了它。转储-rv标志并使用-t创建了我正在寻找的行为。
ls -t | awk -F_ '++n[$1]>5' | xargs rm