Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在LinuxBash中删除除最后5个按日期排序的文件以外的所有文件_Linux_Bash_File_Sorting - Fatal编程技术网

如何在LinuxBash中删除除最后5个按日期排序的文件以外的所有文件

如何在LinuxBash中删除除最后5个按日期排序的文件以外的所有文件,linux,bash,file,sorting,Linux,Bash,File,Sorting,我有一个包含大量日志的文件夹,扩展名是“.log” 我需要按日期排序,并删除除最近5个日志文件以外的所有日志文件。 此外,这个文件夹包含其他文件,但日志文件的扩展名都是“.log”,所以我需要对它们进行筛选,然后进行排序,然后删除除最近5个之外的所有文件 i、 e.我需要删除 2020.01.01.log 2020.01.02.log 根据上面的例子 如何在linux bash中执行此操作?从以下内容开始: ls -tr | head -n -5 这将列出除最新的5个文件之外的所有文件。现

我有一个包含大量日志的文件夹,扩展名是“.log”

我需要按日期排序,并删除除最近5个日志文件以外的所有日志文件。 此外,这个文件夹包含其他文件,但日志文件的扩展名都是“.log”,所以我需要对它们进行筛选,然后进行排序,然后删除除最近5个之外的所有文件

i、 e.我需要删除

2020.01.01.log
2020.01.02.log 
根据上面的例子

如何在linux bash中执行此操作?

从以下内容开始:

ls -tr | head -n -5
这将列出除最新的5个文件之外的所有文件。现在将其导入
xargs

ls -tr | head -n -5 | xargs rm -f
这还不是一个完整的解决方案,它可能会导致包含异常字符的文件名出现问题。但您可以从那里开始工作。

从以下内容开始:

ls -tr | head -n -5
这将列出除最新的5个文件之外的所有文件。现在将其导入
xargs

ls -tr | head -n -5 | xargs rm -f

这还不是一个完整的解决方案,它可能会导致包含异常字符的文件名出现问题。但是您可以从那里开始工作。

可能类似于
find directory/-name“*.log”-type f-print0 | sort-z | head-z-n-5 | xargs-0rm
(在处理文件名中有趣的字符方面可能比您在这里需要的更为强大,但没有像过度杀戮一样的杀戮)可能类似于
find directory/-name“*.log”-键入f-print0 | sort-z | head-z-n-5 | xargs-0 rm
(在处理文件名中的有趣字符时,它可能比您在这里需要的更健壮,但没有像过度杀戮那样的杀戮)