linux - 删除除每个前缀的最近 n 个文件之外的所有文件(基于文件日期)?

标签 linux bash shell awk

我在我的脚本中运行这个命令,它删除了每个文件中除 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/

相关文章:

python - 没有名为对象的模块 [背景虚化]

linux - Perforce、Linux - grep 查找已删除的仓库文件中的内容

linux - 如何从父目录查找和复制子目录中的文件 linux

linux - 按行抓取内容,并固定输出格式

ruby - ruby 脚本中的 `#!` (shebang)(hashbang) 有问题

linux - Indy 10 以 1024 个 block 发送数据。如何增加 block 大小?

c++ - 作弊 Linux : executables and dependent libraries via LD_PRELOAD

linux - Bash - 日期命令和空格

linux - 我应该把 util shell 脚本放在 Linux 中的哪里

c# - 从 Visual Studio 运行 Common Lisp 的 Shell 命令