我在我的脚本中运行这个命令,它删除了每个文件中除 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。
最佳答案
@rici 解决了。转储 -rv 标志并使用 -t 创建了我正在寻找的行为。
ls -t | awk -F_ '++n[$1]>5' | xargs rm
关于linux - 删除除每个前缀的最近 n 个文件之外的所有文件(基于文件日期)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32915296/