如果命名的数字高于X.如何删除不可预测的文件



i目录中有许多文件,这些文件编号为file_1.txt,file_2.txt,file_3.txt等。我想删除上述数字的任何文件,例如5(因此删除file_6.txt,file_7.txt等)。我不知道每个目录中有多少个文件,或者是否有很多文件。这些数字与最近访问文件的最近如何相对应。

在事先的情况下,当创建文件时,我知道我需要删除多少个,我已经使用了此命令,但是我不知道如何使其适应未知:

ls -t | tail -n5 | xargs --no-run-if-empty rm

由于您将问题标记为外壳,而不是bash,所以我试图避免使用狂欢,并使用最低的公共分母SH语法。我相信这做了您的要求:

#!/bin/sh
for file in *
do
    num=`echo $file | sed 's/file_([0-9][0-9]*).txt/1/'`
    if [ "$num" -gt 5 ]
    then
      echo Removing $file
      # Uncomment when confident results are correct
      # rm $file
    fi
done 

我相信许多系统上的非GNU SED不支持+操作员,因此需要[0-9][0-9]*以确保至少一位数字。

最新更新