猿问

删除bash中除最新的X文件之外的所有文件

删除bash中除最新的X文件之外的所有文件

有一个简单的方法,在一个非常标准的UNIX环境中使用bash运行命令来删除目录中除最新的X文件之外的所有文件吗?

为了给出一个具体的例子,想象一下一些cron作业每小时写一个文件(比如一个日志文件或一个tar-up up备份)到一个目录。我想要一种方法来运行另一个cron作业,它将删除该目录中最旧的文件,直到少于5个。

而且要清楚,只有一个文件存在,它永远不应该被删除。


互换的青春
浏览 585回答 3
3回答

子衿沉夜

删除目录中除最新文件的5个(或任何数量)之外的所有文件。rm `ls -t | awk 'NR>5'`

拉莫斯之舞

(ls -t|head -n 5;ls)|sort|uniq -u|xargs rm此版本支持带空格的名称:(ls -t|head -n 5;ls)|sort|uniq -u|sed -e 's,.*,"&",g'|xargs rm
随时随地看视频慕课网APP
我要回答